Refactored CE app with proper interfaces.

Prep work for CORD-605.

Change-Id: I42d05e82e5aa3aef44cfe6f94eceffdf169ea004
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/api/CarrierEthernetPacketNodeService.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/api/CarrierEthernetPacketNodeService.java
new file mode 100644
index 0000000..f36a6c5
--- /dev/null
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/api/CarrierEthernetPacketNodeService.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2017-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.ecord.carrierethernet.api;
+
+import com.google.common.annotations.Beta;
+import org.onosproject.ecord.carrierethernet.app.CarrierEthernetForwardingConstruct;
+import org.onosproject.ecord.carrierethernet.app.CarrierEthernetNetworkInterface;
+import org.onosproject.ecord.carrierethernet.app.CarrierEthernetUni;
+
+import java.util.Set;
+
+/**
+ * Service interface used to control Carrier Ethernet nodes according to their control protocol.
+ */
+@Beta
+public interface CarrierEthernetPacketNodeService {
+
+    /**
+     * Creates and submits FlowObjectives depending on role of the device in the FC and ingress/egress NI types.
+     *
+     * @param fc the forwarding construct
+     * @param srcNi the source network interface
+     * @param dstNiSet the set of destination network interfaces
+     */
+    void setNodeForwarding(CarrierEthernetForwardingConstruct fc, CarrierEthernetNetworkInterface srcNi,
+                           Set<CarrierEthernetNetworkInterface> dstNiSet);
+
+    /**
+     * Creates and stores meters based on the UNI's bandwidth profile.
+     *
+     * @param fc the forwarding construct
+     * @param uni the user to network interface
+     */
+    void createBandwidthProfileResources(CarrierEthernetForwardingConstruct fc, CarrierEthernetUni uni);
+
+    /**
+     * Applies meters to flows.
+     *
+     * @param fc the forwarding construct
+     * @param uni the user to network interface
+     */
+    void applyBandwidthProfileResources(CarrierEthernetForwardingConstruct fc, CarrierEthernetUni uni);
+
+    /**
+     * Removes the meters associated with a specific UNI of an FC.
+     *
+     * @param fcId the forwarding construct id
+     * @param uni the user to network interface
+     */
+    void removeBandwidthProfileResources(String fcId, CarrierEthernetUni uni);
+
+    /**
+     * Removes all installed flow objectives associated with a specific FC.
+     *
+     * @param fc the forwarding construct
+     */
+    void removeAllForwardingResources(CarrierEthernetForwardingConstruct fc);
+
+}
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/api/CarrierEthernetProvisionerService.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/api/CarrierEthernetProvisionerService.java
new file mode 100644
index 0000000..c5144ee
--- /dev/null
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/api/CarrierEthernetProvisionerService.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2017-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.ecord.carrierethernet.api;
+
+import com.google.common.annotations.Beta;
+import org.onosproject.ecord.carrierethernet.app.CarrierEthernetForwardingConstruct;
+
+/**
+ * Service interface for provisioning of Carrier Ethernet connections.
+ */
+@Beta
+public interface CarrierEthernetProvisionerService {
+    /**
+     * Creates bandwidth profiles at the UNIs of an FC.
+     *
+     * @param fc the forwarding construct
+     */
+    void createBandwidthProfiles(CarrierEthernetForwardingConstruct fc);
+
+    /**
+     * Applies bandwidth profiles to the UNIs of an FC.
+     *
+     * @param fc the forwarding construct
+     */
+    void applyBandwidthProfiles(CarrierEthernetForwardingConstruct fc);
+
+    /**
+     * Removes bandwidth profiles from the UNIs of an FC.
+     *
+     * @param fc the forwarding construct
+     */
+    void removeBandwidthProfiles(CarrierEthernetForwardingConstruct fc);
+
+    /**
+     * Establishes connectivity for the provided FC by installing all necessary forwarding rules.
+     *
+     * @param fc the forwarding construct
+     */
+    void setupConnectivity(CarrierEthernetForwardingConstruct fc);
+
+    /**
+     * Removes connectivity for the provided FC by removing all installed forwarding rules.
+     *
+     * @param fc the forwarding construct
+     */
+    void removeConnectivity(CarrierEthernetForwardingConstruct fc);
+
+}
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/api/CarrierEthernetService.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/api/CarrierEthernetService.java
new file mode 100644
index 0000000..f147b24
--- /dev/null
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/api/CarrierEthernetService.java
@@ -0,0 +1,246 @@
+/*
+ * Copyright 2017-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.ecord.carrierethernet.api;
+
+import com.google.common.annotations.Beta;
+import org.onosproject.ecord.carrierethernet.app.CarrierEthernetForwardingConstruct;
+import org.onosproject.ecord.carrierethernet.app.CarrierEthernetLogicalTerminationPoint;
+import org.onosproject.ecord.carrierethernet.app.CarrierEthernetNetworkInterface;
+import org.onosproject.ecord.carrierethernet.app.CarrierEthernetUni;
+import org.onosproject.ecord.carrierethernet.app.CarrierEthernetVirtualConnection;
+import org.onosproject.net.ConnectPoint;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Service interface for Carrier Ethernet.
+ *
+ * Defines interactions with CE concepts such as Ethernet Virtual Circuit (EVC), Forwarding Construct (FC),
+ * Logical Termination Point (LTP), and User to Network Interface (UNI).
+ */
+@Beta
+public interface CarrierEthernetService {
+    /**
+     * Returns the map of installed EVCs.
+     *
+     * @return map of installed EVCs
+     */
+    Map<String, CarrierEthernetVirtualConnection> evcMap();
+
+    /**
+     * Get an installed EVC using its id.
+     *
+     * @param evcId the EVC id
+     * @return the EVC representation or null if the EVC doesn't exist
+     */
+    CarrierEthernetVirtualConnection getEvc(String evcId);
+
+    // TODO: Add method to remove a UNI from an already installed EVC
+
+    /**
+     * Establish connectivity according to the EVC type (E-Line, E-Tree, E-LAN) and the EVC parameters.
+     *
+     * @param evc the EVC representation
+     * @return the (potentially modified) EVC that was installed or null in case of failure
+     */
+    CarrierEthernetVirtualConnection installEvc(CarrierEthernetVirtualConnection evc);
+
+    /**
+     * Re-establish connectivity for an existing EVC.
+     *
+     * @param evc the updated EVC definition
+     * @return the (potentially modified) EVC that was installed or null if EVC connectivity could not be established
+     */
+    CarrierEthernetVirtualConnection updateEvc(CarrierEthernetVirtualConnection evc);
+
+
+    /**
+     * Removes all resources associated with a specific installed EVC.
+     *
+     * @param evcId the EVC id
+     */
+    void removeEvc(String evcId);
+
+
+    /**
+     * Removes all installed EVCs and the associated resources.
+     * <p>
+     * This will be called either from the deactivate method or as a response to a CLI/REST command.
+     */
+    void removeAllEvcs();
+
+    /**
+     * Enable or disable EVC fragmentation into FCs.
+     *
+     * @param evcFragmentationEnabled true to enable fragmentation, false otherwise
+     */
+    void setEvcFragmentation(boolean evcFragmentationEnabled);
+
+
+    /**
+     * Checks the fragmentation state of the EVC.
+     *
+     * @return true if fragmentation is enabled, false otherwise
+     */
+    boolean getEvcFragmentation();
+
+    /**
+     * Set the EVC fragmentation flag to the value before its last change.
+     *
+     */
+    void resetEvcFragmentation();
+
+    /**
+     * Get the map containing all installed FCs.
+     *
+     * @return the FC map
+     */
+    Map<String, CarrierEthernetForwardingConstruct> fcMap();
+
+    /**
+     * Get an installed FC using its id.
+     *
+     * @param fcId the FC id
+     * @return the FC representation or null if the EVC doesn't exist
+     */
+    CarrierEthernetForwardingConstruct getFc(String fcId);
+
+    /**
+     * Installs all resources associated with a specific FC.
+     *
+     * @param fc the FC to install
+     * @return the FC that was installed
+     */
+    CarrierEthernetForwardingConstruct installFc(CarrierEthernetForwardingConstruct fc);
+
+    /**
+     * Re-establish connectivity for an existing FC.
+     *
+     * @param fc the updated FC representation
+     * @return the possibly modified FC that was installed or null if updated FC could not be installed
+     */
+    CarrierEthernetForwardingConstruct updateFc(CarrierEthernetForwardingConstruct fc);
+
+    /**
+     * Removes all resources associated with a specific FC.
+     *
+     * @param fcId the FC id
+     * @return the FC that was removed or null if removal failed
+     */
+    CarrierEthernetForwardingConstruct removeFc(String fcId);
+
+    /**
+     * Removes all resources associated with the application.
+     *
+     * This will be called either from the deactivate method or as a response to a CLI command.
+     */
+    void removeAllFcs();
+
+    /**
+     * Get the map containing all global UNIs.
+     *
+     * @return the global UNI map
+     */
+    Map<String, CarrierEthernetUni> getUniMap();
+
+    /**
+     * Adds a potential UNI to the global UNI map if they are not already there.
+     *
+     * @param uni the potential UNI to add to global UNI map
+     * @return the UNI that was added or null if UNI existed already
+     */
+    CarrierEthernetUni addGlobalUni(CarrierEthernetUni uni);
+
+    /**
+     * Remove an UNI from the set of global UNIs.
+     *
+     * @param uniId the id of the UNI to be removed
+     * @return the UNI that was removed or null in case of failure (didn't exist of refCount was not 0)
+     */
+    CarrierEthernetUni removeGlobalUni(String uniId);
+
+    // TODO: Add removeAllGlobalUnis method (or command only?)
+
+    /**
+     * Creates a new UNI associated with the provided connect point.
+     *
+     * Conditions for validating an UNI:
+     * - ConnectPoint deviceId and Port are valid
+     * - Port is enabled
+     *
+     * @param cp the connect point to be associated with the generated UNI
+     * @return a new validated UNI or null if the validation failed
+     */
+    CarrierEthernetUni generateUni(ConnectPoint cp);
+
+    /**
+     * Returns all potential UNIs from the topology.
+     *
+     * @param excludeAdded indicates that UNIs already added in the UNI map should not be in the returned set
+     * @param includeRemoved indicates that UNIs explicitly removed from the UNI map should be in the returned set
+     * @return set of all potential UNIs in the topology
+     */
+    Set<CarrierEthernetUni> getUnisFromTopo(boolean excludeAdded, boolean includeRemoved);
+
+    /**
+     * Get the map containing all global LTPs.
+     *
+     * @return the global LTP map
+     */
+    Map<String, CarrierEthernetLogicalTerminationPoint> ltpMap();
+
+    /**
+     * Adds a potential LTP and its UNI or pair INNI to the global LTP/UNI maps if they are not already there.
+     *
+     * @param ltp the potential LTP to add to global LTP map
+     * @return the LTP that was added or null if it already existed
+     */
+     CarrierEthernetLogicalTerminationPoint addGlobalLtp(CarrierEthernetLogicalTerminationPoint ltp);
+
+    /**
+     * Remove an LTP from the set of global LTPs, as well as the corresponding INNI LTP at the other end of the link.
+     *
+     * @param ltpId the id of the LTP to be removed
+     * @return the LTP that was removed or null in case of failure (didn't exist of refCount was not 0)
+     */
+    CarrierEthernetLogicalTerminationPoint removeGlobalLtp(String ltpId);
+
+    // TODO: Add removeAllGlobalLtps method (or command only?)
+
+    /**
+     * Creates a new LTP of the provided type and associated with the provided connect point.
+     *
+     * Conditions for validating an LTP:
+     * - ConnectPoint deviceId and Port are valid
+     * - Port is enabled
+     *
+     * @param cp the connect point to be associated with the generated LTP
+     * @param ltpType the type of the LTP to be generated (UNI/INNI/ENNI)
+     * @return a new validated LTP or null if the validation failed
+     */
+    CarrierEthernetLogicalTerminationPoint generateLtp(ConnectPoint cp, CarrierEthernetNetworkInterface.Type ltpType);
+
+    /**
+     * Returns all potential LTPs from the topology.
+     *
+     * @param excludeAdded indicates that LTPs already added in the LTP map should not be in the returned set
+     * @param includeRemoved indicates that LTPs explicitly removed from the LTP map should be in the returned set
+     * @return set of all potential LTPs in the topology
+     */
+    Set<CarrierEthernetLogicalTerminationPoint> getLtpsFromTopo(boolean excludeAdded, boolean includeRemoved);
+}
\ No newline at end of file
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/api/package-info.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/api/package-info.java
new file mode 100644
index 0000000..1d2d602
--- /dev/null
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/api/package-info.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2017-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Interface definitions for Carrier Ethernet.
+ */
+package org.onosproject.ecord.carrierethernet.api;
\ No newline at end of file
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/app/CarrierEthernetManager.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/app/CarrierEthernetManager.java
index e65fe86..9ce9fb2 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/app/CarrierEthernetManager.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/app/CarrierEthernetManager.java
@@ -26,6 +26,8 @@
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.onlab.packet.VlanId;
 
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetProvisionerService;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.Device;
 import org.onosproject.net.Link;
@@ -59,9 +61,12 @@
 import static org.onosproject.net.config.basics.SubjectFactories.CONNECT_POINT_SUBJECT_FACTORY;
 import static org.slf4j.LoggerFactory.getLogger;
 
+/**
+ * Implementation of a Carrier Ethernet Manager.
+ */
 @Component(immediate = true)
-@Service(value = CarrierEthernetManager.class)
-public class CarrierEthernetManager {
+@Service
+public class CarrierEthernetManager implements CarrierEthernetService {
 
     private final Logger log = getLogger(getClass());
 
@@ -81,7 +86,7 @@
     protected NetworkConfigService networkConfigService;
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected CarrierEthernetProvisioner ceProvisioner;
+    protected CarrierEthernetProvisionerService ceProvisioner;
 
     // Keeps track of the next S-VLAN tag the app will try to use
     private static short nextVlanId = 1;
@@ -150,60 +155,32 @@
         removeAllFcs();
     }
 
-    /**
-     * Returns the map of installed EVCs.
-     *
-     * @return map of installed EVCs
-     */
-    public  Map<String, CarrierEthernetVirtualConnection> evcMap() {
+    @Override
+    public Map<String, CarrierEthernetVirtualConnection> evcMap() {
         return this.evcMap;
     }
 
-    // TODO: Add method to remove a UNI from an already installed EVC
-
-    /**
-     * Get an installed EVC using its id.
-     *
-     * @param evcId the EVC id
-     * @return the EVC representation or null if the EVC doesn't exist
-     */
+    @Override
     public CarrierEthernetVirtualConnection getEvc(String evcId) {
         return ((evcMap.get(evcId) == null) ? null : evcMap.get(evcId));
     }
 
-    /**
-     * Get an installed FC using its id.
-     *
-     * @param fcId the FC id
-     * @return the FC representation or null if the EVC doesn't exist
-     */
+    @Override
     public CarrierEthernetForwardingConstruct getFc(String fcId) {
         return ((fcMap.get(fcId) == null) ? null : fcMap.get(fcId));
     }
 
-    /**
-     * Get the map containing all installed FCs.
-     *
-     * @return the FC map
-     */
+    @Override
     public Map<String, CarrierEthernetForwardingConstruct> fcMap() {
         return fcMap;
     }
 
-    /**
-     * Get the map containing all global LTPs.
-     *
-     * @return the global LTP map
-     */
+    @Override
     public Map<String, CarrierEthernetLogicalTerminationPoint> ltpMap() {
         return ltpMap;
     }
 
-    /**
-     * Get the map containing all global UNIs.
-     *
-     * @return the global UNI map
-     */
+    @Override
     public Map<String, CarrierEthernetUni> getUniMap() {
         return uniMap;
     }
@@ -315,12 +292,7 @@
         return evc;
     }
 
-    /**
-     * Establish connectivity according to the EVC type (E-Line, E-Tree, E-LAN) and the EVC parameters.
-     *
-     * @param evc the EVC representation
-     * @return the (potentially modified) EVC that was installed or null in case of failure
-     */
+    @Override
     public CarrierEthernetVirtualConnection installEvc(CarrierEthernetVirtualConnection evc) {
 
         // If EVC already exists, remove it and reestablish with new parameters
@@ -429,7 +401,7 @@
      * @param evc the EVC representation
      * @return the equivalent FC
      */
-    CarrierEthernetForwardingConstruct fcFromEvc(CarrierEthernetVirtualConnection evc) {
+    private CarrierEthernetForwardingConstruct fcFromEvc(CarrierEthernetVirtualConnection evc) {
         Set<CarrierEthernetLogicalTerminationPoint> ltpSet = new HashSet<>();
         evc.uniSet().forEach(uni -> ltpSet.add(new CarrierEthernetLogicalTerminationPoint(null, uni)));
         return CarrierEthernetForwardingConstruct.builder()
@@ -444,7 +416,7 @@
      * @param evc the EVC representation
      * @return the set of FCs constituting the EVC
      */
-    Set<CarrierEthernetForwardingConstruct> fragmentEvc(CarrierEthernetVirtualConnection evc) {
+    private Set<CarrierEthernetForwardingConstruct> fragmentEvc(CarrierEthernetVirtualConnection evc) {
 
         Set<CarrierEthernetForwardingConstruct> fcSet = new HashSet<>();
 
@@ -610,12 +582,7 @@
         return fcSet;
     }
 
-    /**
-     * Reestablish connectivity for an existing EVC.
-     *
-     * @param evc the updated EVC definition
-     * @return the (potentially modified) EVC that was installed or null if EVC connectivity could not be established
-     */
+    @Override
     public CarrierEthernetVirtualConnection updateEvc(CarrierEthernetVirtualConnection evc) {
         // Just checking again
         if (evcMap.containsKey(evc.id())) {
@@ -657,20 +624,12 @@
         fc.ltpSet().forEach(ltp -> ltpMap.get(ltp.id()).ni().removeEcNi(ltp.ni()));
     }
 
-    /**
-     * Removes all installed EVCs and the associated resources.
-     *
-     * This will be called either from the deactivate method or as a response to a CLI/REST command.
-     * */
+    @Override
     public void removeAllEvcs() {
         evcMap.keySet().forEach(evcId -> removeEvc(evcId));
     }
 
-    /**
-     * Removes all resources associated with a specific installed EVC.
-     *
-     * @param evcId the EVC id
-     * */
+    @Override
     public void removeEvc(String evcId) {
         if (evcMap.containsKey(evcId)) {
             CarrierEthernetVirtualConnection evc = evcMap.get(evcId);
@@ -750,12 +709,7 @@
         return fc;
     }
 
-    /**
-     * Installs all resources associated with a specific FC.
-     *
-     * @param fc the FC to install
-     * @return the FC that was installed
-     * */
+    @Override
     public CarrierEthernetForwardingConstruct installFc(CarrierEthernetForwardingConstruct fc) {
 
         // If FC already exists, remove it and reestablish with new parameters
@@ -793,12 +747,7 @@
         return fc;
     }
 
-    /**
-     * Reestablish connectivity for an existing FC.
-     *
-     * @param fc the updated FC representation
-     * @return the possibly modified FC that was installed or null if updated FC could not be installed
-     */
+    @Override
     public CarrierEthernetForwardingConstruct updateFc(CarrierEthernetForwardingConstruct fc) {
         // Just checking again
         if (fcMap.containsKey(fc.id())) {
@@ -811,21 +760,12 @@
         return installFc(fc);
     }
 
-    /**
-     * Removes all resources associated with the application.
-     *
-     * This will be called either from the deactivate method or as a response to a CLI command.
-     * */
+    @Override
     public void removeAllFcs() {
         fcMap.keySet().forEach(fcId -> removeFc(fcId));
     }
 
-    /**
-     * Removes all resources associated with a specific FC.
-     *
-     * @param fcId the FC id
-     * @return the FC that was removed or null if removal failed
-     * */
+    @Override
     public CarrierEthernetForwardingConstruct removeFc(String fcId) {
         if (fcMap.containsKey(fcId)) {
             CarrierEthernetForwardingConstruct fc = fcMap.get(fcId);
@@ -852,7 +792,7 @@
      * Returns the unique S-TAGs currently used by FCs across the CE network.
      *
      * @return the S-TAGs currently used
-     * */
+     */
     private Set<VlanId> usedVlans() {
         return fcMap.values().stream().map(CarrierEthernetForwardingConstruct::vlanId)
                 .collect(Collectors.toSet());
@@ -863,8 +803,8 @@
      *
      * @param excludedVlans the vlanIds that are not allowed
      * @return the generated vlanId; null if none found
-     * */
-    public VlanId generateVlanId(Set<VlanId> excludedVlans) {
+     */
+    private VlanId generateVlanId(Set<VlanId> excludedVlans) {
         // If all vlanIds are being used return null, else try to find the next available one
         if (excludedVlans.size() <  VlanId.MAX_VLAN - 1) {
             while (excludedVlans.contains(VlanId.vlanId(nextVlanId))) {
@@ -881,7 +821,7 @@
      * Generates a unique vlanId in the context of the CE app.
      *
      * @return the generated vlanId or null if none found
-     * */
+     */
     private Short generateEvcShortId() {
 
         List<Short> evcShortIdList = evcMap.values()
@@ -906,7 +846,7 @@
      *
      * @param evc the EVC representation
      * @return the generated EVC id or null if none found
-     * */
+     */
     private String generateEvcId(CarrierEthernetVirtualConnection evc) {
 
         // TODO: Add different connectivity types
@@ -930,7 +870,7 @@
      *
      * @param fc the FC representation
      * @return the generated FC id or null if none found
-     * */
+     */
     private String generateFcId(CarrierEthernetForwardingConstruct fc) {
 
         // TODO: Add different connectivity types
@@ -938,14 +878,7 @@
         return "FC-" + fc.vlanId().toString();
     }
 
-    /**
-     * Remove an LTP from the set of global LTPs, as well as the corresponding INNI LTP at the other end of the link.
-     *
-     *
-     * @param ltpId the id of the LTP to be removed
-     * @return the LTP that was removed or null in case of failure (didn't exist of refCount was not 0)
-     * */
-    // TODO: Add removeAllGlobalLtps method (or command only?)
+    @Override
     public CarrierEthernetLogicalTerminationPoint removeGlobalLtp(String ltpId) {
 
         if (!ltpMap.containsKey(ltpId)) {
@@ -981,13 +914,7 @@
         return ltp;
     }
 
-    /**
-     * Remove an UNI from the set of global UNIs.
-     *
-     * @param uniId the id of the UNI to be removed
-     * @return the UNI that was removed or null in case of failure (didn't exist of refCount was not 0)
-     * */
-    // TODO: Add removeAllGlobalUnis method (or command only?)
+    @Override
     public CarrierEthernetUni removeGlobalUni(String uniId) {
 
         if (!uniMap.containsKey(uniId)) {
@@ -1012,13 +939,7 @@
         return uni;
     }
 
-    /**
-     * Returns all potential UNIs from the topology.
-     *
-     * @param excludeAdded indicates that UNIs already added in the UNI map should not be in the returned set
-     * @param includeRemoved indicates that UNIs explicitly removed from the UNI map should be in the returned set
-     * @return set of all potential UNIs in the topology
-     * */
+    @Override
     public Set<CarrierEthernetUni> getUnisFromTopo(boolean excludeAdded, boolean includeRemoved) {
 
         CarrierEthernetUni uni;
@@ -1042,16 +963,7 @@
         return uniSet;
     }
 
-    /**
-     * Creates a new UNI associated with the provided connect point.
-     *
-     * Conditions for validating an UNI:
-     * - ConnectPoint deviceId and Port are valid
-     * - Port is enabled
-     *
-     * @param cp the connect point to be associated with the generated UNI
-     * @return a new validated UNI or null if the validation failed
-     * */
+    @Override
     public CarrierEthernetUni generateUni(ConnectPoint cp) {
 
         String uniId = cp.deviceId().toString() + "/" + cp.port().toString();
@@ -1083,12 +995,7 @@
         return new CarrierEthernetUni(cp, uniId);
     }
 
-    /**
-     * Adds a potential UNI to the global UNI map if they are not already there.
-     *
-     * @param uni the potential UNI to add to global UNI map
-     * @return the UNI that was added or null if UNI existed already
-     * */
+    @Override
     public CarrierEthernetUni addGlobalUni(CarrierEthernetUni uni) {
         // Add UNI only if it's not already there. If corresponding LTP already exists, link them, otherwise create it
         if (!uniMap.containsKey(uni.id())) {
@@ -1108,12 +1015,7 @@
         }
     }
 
-    /**
-     * Returns all potential LTPs from the topology.
-     * @param excludeAdded indicates that LTPs already added in the LTP map should not be in the returned set
-     * @param includeRemoved indicates that LTPs explicitly removed from the LTP map should be in the returned set
-     * @return set of all potential LTPs in the topology
-     * */
+    @Override
     public Set<CarrierEthernetLogicalTerminationPoint> getLtpsFromTopo(boolean excludeAdded, boolean includeRemoved) {
 
         CarrierEthernetLogicalTerminationPoint ltp;
@@ -1140,17 +1042,7 @@
         return ltpSet;
     }
 
-    /**
-     * Creates a new LTP of the provided type and associated with the provided connect point.
-     *
-     * Conditions for validating an LTP:
-     * - ConnectPoint deviceId and Port are valid
-     * - Port is enabled
-     *
-     * @param cp the connect point to be associated with the generated LTP
-     * @param ltpType the type of the LTP to be generated (UNI/INNI/ENNI)
-     * @return a new validated LTP or null if the validation failed
-     * */
+    @Override
     public CarrierEthernetLogicalTerminationPoint generateLtp(ConnectPoint cp,
                                                                CarrierEthernetNetworkInterface.Type ltpType) {
 
@@ -1196,7 +1088,7 @@
      * @param cp the connect point associated with the LTP to be validated
      * @param ltpType the type of the LTP to be validated or null in case a type is to be decided by the method
      * @return the ltpType if validation succeeded, a new type depending on cp and topo, or null if validation failed
-     * */
+     */
     private CarrierEthernetNetworkInterface.Type validateLtpType(
             ConnectPoint cp, CarrierEthernetNetworkInterface.Type ltpType) {
         if (linkService.getEgressLinks(cp).isEmpty() && linkService.getIngressLinks(cp).isEmpty()) {
@@ -1225,12 +1117,7 @@
         }
     }
 
-    /**
-     * Adds a potential LTP and its UNI or pair INNI to the global LTP/UNI maps if they are not already there.
-     *
-     * @param ltp the potential LTP to add to global LTP map
-     * @return the LTP that was added or null if it already existed
-     * */
+    @Override
     public CarrierEthernetLogicalTerminationPoint addGlobalLtp(CarrierEthernetLogicalTerminationPoint ltp) {
         // If LTP contains a UNI, add it only if it's not already there, else point to the existing UNI
         // FIXME: Assumes LTP and UNI id are the same
@@ -1273,7 +1160,7 @@
      *
      * @param cp the connect point to check
      * @return a new FC-specific LTP associated with cp if the corresponding global LTP exists or null otherwise
-     * */
+     */
     private CarrierEthernetLogicalTerminationPoint fcLtpFromCp(ConnectPoint cp,
                                                                CarrierEthernetLogicalTerminationPoint.Role ltpRole) {
         // Check first if cp is associated with a device
@@ -1297,7 +1184,7 @@
      * @param ltpId the LTP id to search
      * @param fcSet the FC set to search
      * @return the first FC found in fcSet which contains an LTP with id ltpId, or null if no such FC is found
-     * */
+     */
     // FIXME: Find more efficient way to do that
     private CarrierEthernetForwardingConstruct getFcFromLtpId(String ltpId,
                                                               Set<CarrierEthernetForwardingConstruct> fcSet) {
@@ -1310,32 +1197,28 @@
         return null;
     }
 
-    /**
-     * Utility method to enable or disable EVC fragmentation into FCs.
-     *
-     * @param evcFragmentationEnabled true to enable fragmentation; false otherwise
-     * */
+    @Override
     public void setEvcFragmentation(boolean evcFragmentationEnabled) {
         prevEvcFragmentationStatus = this.evcFragmentationEnabled;
         this.evcFragmentationEnabled = evcFragmentationEnabled;
     }
 
+    @Override
     public boolean getEvcFragmentation() {
         return evcFragmentationEnabled;
     }
 
-    /**
-     * Utility method to set the EVC fragmentation flag to the value before its last change.
-     *
-     * */
+    @Override
     public void resetEvcFragmentation() {
         this.evcFragmentationEnabled = prevEvcFragmentationStatus;
     }
 
     /**
      * Returns the VLAN tag associated with an FC via network configuration.
+     *
      * The VLAN tag to be selected should be configured in at least one of the
      * FC LTPs and no different tag should be present in the rest of the FC LTPs.
+     *
      * @param fc the FC to check
      * @return an Optional object with the VLAN to be associated with the FC if
      * one was found; an empty Optional object otherwise
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/app/CarrierEthernetPacketNodeManager.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/app/CarrierEthernetPacketNodeManager.java
index fca4f6d..c76e819 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/app/CarrierEthernetPacketNodeManager.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/app/CarrierEthernetPacketNodeManager.java
@@ -15,16 +15,18 @@
  */
 package org.onosproject.ecord.carrierethernet.app;
 
+import org.apache.commons.lang3.tuple.Pair;
 import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Deactivate;
 import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.apache.felix.scr.annotations.Service;
 import org.onlab.packet.Ethernet;
 import org.onlab.packet.VlanId;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreService;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetPacketNodeService;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.flow.DefaultFlowRule;
@@ -48,32 +50,31 @@
 import org.onosproject.net.flowobjective.ForwardingObjective;
 import org.onosproject.net.flowobjective.NextObjective;
 import org.onosproject.net.flowobjective.Objective;
+import org.onosproject.net.meter.Band;
+import org.onosproject.net.meter.DefaultBand;
+import org.onosproject.net.meter.DefaultMeterRequest;
 import org.onosproject.net.meter.Meter;
 import org.onosproject.net.meter.MeterId;
 import org.onosproject.net.meter.MeterRequest;
-import org.onosproject.net.meter.Band;
-import org.onosproject.net.meter.DefaultBand;
 import org.onosproject.net.meter.MeterService;
-import org.onosproject.net.meter.DefaultMeterRequest;
 import org.onosproject.openflow.controller.Dpid;
 import org.onosproject.openflow.controller.OpenFlowController;
 import org.onosproject.openflow.controller.OpenFlowSwitch;
 import org.slf4j.Logger;
 
 import java.util.Collection;
+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.Objects;
 import java.util.Set;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.List;
-import java.util.LinkedList;
-import java.util.Iterator;
-import java.util.ListIterator;
 import java.util.stream.Collectors;
 import java.util.stream.StreamSupport;
 
-import org.apache.commons.lang3.tuple.Pair;
 import static org.slf4j.LoggerFactory.getLogger;
 
 /**
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/app/CarrierEthernetPacketNodeService.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/app/CarrierEthernetPacketNodeService.java
deleted file mode 100644
index 081acde..0000000
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/app/CarrierEthernetPacketNodeService.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.ecord.carrierethernet.app;
-
-import java.util.Set;
-
-/**
- * Abstraction of a class used to control Carrier Ethernet nodes according to their control protocol.
- */
-public interface CarrierEthernetPacketNodeService {
-
-    void setNodeForwarding(CarrierEthernetForwardingConstruct fc, CarrierEthernetNetworkInterface srcNi,
-                                    Set<CarrierEthernetNetworkInterface> dstNiSet);
-
-    void createBandwidthProfileResources(CarrierEthernetForwardingConstruct fc, CarrierEthernetUni uni);
-
-    void applyBandwidthProfileResources(CarrierEthernetForwardingConstruct fc, CarrierEthernetUni uni);
-
-    void removeBandwidthProfileResources(String fcId, CarrierEthernetUni uni);
-
-    void removeAllForwardingResources(CarrierEthernetForwardingConstruct fc);
-
-}
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/app/CarrierEthernetProvisioner.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/app/CarrierEthernetProvisioner.java
index 55e1298..a4d887a 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/app/CarrierEthernetProvisioner.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/app/CarrierEthernetProvisioner.java
@@ -22,6 +22,8 @@
 import org.apache.felix.scr.annotations.Service;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.onlab.util.Bandwidth;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetPacketNodeService;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetProvisionerService;
 import org.onosproject.net.Link;
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.Path;
@@ -52,8 +54,8 @@
 import static org.slf4j.LoggerFactory.getLogger;
 
 @Component(immediate = true)
-@Service (value = CarrierEthernetProvisioner.class)
-public class CarrierEthernetProvisioner {
+@Service ()
+public class CarrierEthernetProvisioner implements CarrierEthernetProvisionerService {
 
     private final Logger log = getLogger(getClass());
 
@@ -93,6 +95,7 @@
         opticalPathService.removeListener(opticalEventListener);
     }
 
+    @Override
     public void setupConnectivity(CarrierEthernetForwardingConstruct fc) {
 
         boolean allPairsConnected = true;
@@ -325,35 +328,24 @@
         return inverseLinks;
     }
 
+    @Override
     public void removeConnectivity(CarrierEthernetForwardingConstruct fc) {
         cePktNodeService.removeAllForwardingResources(fc);
         removeOpticalConnectivity(fc.metroConnectivity().id());
     }
 
-    /**
-     * Creates bandwidth profiles at the UNIs of an FC.
-     *
-     * @param fc the FC representation
-     */
+    @Override
     public void createBandwidthProfiles(CarrierEthernetForwardingConstruct fc) {
         fc.uniSet().forEach(uni -> cePktNodeService.createBandwidthProfileResources(fc, uni));
     }
 
-    /**
-     * Applies bandwidth profiles to the UNIs of an FC.
-     *
-     * @param fc the FC representation
-     */
+    @Override
     public void applyBandwidthProfiles(CarrierEthernetForwardingConstruct fc) {
         //  TODO: Select node manager depending on device protocol
         fc.uniSet().forEach(uni -> cePktNodeService.applyBandwidthProfileResources(fc, uni));
     }
 
-    /**
-     * Removes bandwidth profiles from the UNIs of an FC.
-     *
-     * @param fc the FC representation
-     */
+    @Override
     public void removeBandwidthProfiles(CarrierEthernetForwardingConstruct fc) {
         //  TODO: Select node manager depending on device protocol
         fc.ltpSet().forEach((ltp -> {
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetCreateEvcCommand.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetCreateEvcCommand.java
index 3bbd6e72..b3c4225 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetCreateEvcCommand.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetCreateEvcCommand.java
@@ -21,11 +21,11 @@
 import org.apache.karaf.shell.commands.Option;
 import org.onlab.packet.VlanId;
 import org.onlab.util.Bandwidth;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetBandwidthProfile;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetVirtualConnection;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetUni;
 import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
+import org.onosproject.ecord.carrierethernet.app.CarrierEthernetBandwidthProfile;
+import org.onosproject.ecord.carrierethernet.app.CarrierEthernetUni;
+import org.onosproject.ecord.carrierethernet.app.CarrierEthernetVirtualConnection;
 import org.onosproject.net.ConnectPoint;
 
 import java.util.HashSet;
@@ -75,7 +75,7 @@
 
     @Override
     protected void execute() {
-        CarrierEthernetManager ceManager = get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = get(CarrierEthernetService.class);
         ceManager.installEvc(CarrierEthernetVirtualConnection.builder()
                                      .id(argEvcId)
                                      .cfgId(argEvcCfgId)
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetCreateFcCommand.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetCreateFcCommand.java
index 15838d6..054697c 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetCreateFcCommand.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetCreateFcCommand.java
@@ -22,12 +22,12 @@
 import org.onlab.packet.VlanId;
 import org.onlab.util.Bandwidth;
 import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 import org.onosproject.ecord.carrierethernet.app.CarrierEthernetBandwidthProfile;
 import org.onosproject.ecord.carrierethernet.app.CarrierEthernetEnni;
 import org.onosproject.ecord.carrierethernet.app.CarrierEthernetForwardingConstruct;
 import org.onosproject.ecord.carrierethernet.app.CarrierEthernetInni;
 import org.onosproject.ecord.carrierethernet.app.CarrierEthernetLogicalTerminationPoint;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
 import org.onosproject.ecord.carrierethernet.app.CarrierEthernetNetworkInterface;
 import org.onosproject.ecord.carrierethernet.app.CarrierEthernetUni;
 import org.onosproject.ecord.carrierethernet.app.CarrierEthernetVirtualConnection;
@@ -80,7 +80,7 @@
 
     @Override
     protected void execute() {
-        CarrierEthernetManager ceManager = get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = get(CarrierEthernetService.class);
         ceManager.installFc(CarrierEthernetForwardingConstruct.builder()
                                     .id(argFcId)
                                     .cfgId(argFcCfgId)
@@ -144,7 +144,7 @@
      */
     private Set<CarrierEthernetLogicalTerminationPoint> generateLtpSet() {
 
-        CarrierEthernetManager ceManager = get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = get(CarrierEthernetService.class);
 
         // Update list of global LTPs in the network
         ceManager.getLtpsFromTopo(true, false).forEach(ltp -> ceManager.addGlobalLtp(ltp));
@@ -169,7 +169,7 @@
 
     private CarrierEthernetNetworkInterface generateNi(String ltpId, CarrierEthernetUni.Role role) {
 
-        CarrierEthernetManager ceManager = get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = get(CarrierEthernetService.class);
 
         if (ceManager.ltpMap().get(ltpId).ni() instanceof CarrierEthernetUni) {
             return CarrierEthernetUni.builder()
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetCreateLtpCommand.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetCreateLtpCommand.java
index 3e5e70d..97cbfec 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetCreateLtpCommand.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetCreateLtpCommand.java
@@ -19,8 +19,8 @@
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 import org.onosproject.ecord.carrierethernet.app.CarrierEthernetLogicalTerminationPoint;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
 import org.onosproject.ecord.carrierethernet.app.CarrierEthernetNetworkInterface;
 import org.onosproject.net.ConnectPoint;
 
@@ -47,7 +47,7 @@
     @Override
     protected void execute() {
 
-        CarrierEthernetManager ceManager = get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = get(CarrierEthernetService.class);
 
         CarrierEthernetNetworkInterface.Type ltpType = null;
 
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetCreateUniCommand.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetCreateUniCommand.java
index dfdf84e..baa20e6 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetCreateUniCommand.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetCreateUniCommand.java
@@ -19,7 +19,7 @@
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 import org.onosproject.ecord.carrierethernet.app.CarrierEthernetUni;
 import org.onosproject.net.ConnectPoint;
 
@@ -42,7 +42,7 @@
     @Override
     protected void execute() {
 
-        CarrierEthernetManager ceManager = get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = get(CarrierEthernetService.class);
 
         Iterator<String> cpIt = argConnectPointList.iterator();
         while (cpIt.hasNext()) {
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetEvcFragmentationCommand.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetEvcFragmentationCommand.java
index f21e6ea..780be43 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetEvcFragmentationCommand.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetEvcFragmentationCommand.java
@@ -18,7 +18,7 @@
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 
 /**
  * CLI command for indicating whether EVCs will be fragmented into FCs.
@@ -34,7 +34,7 @@
 
     @Override
     protected void execute() {
-        CarrierEthernetManager ceManager = get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = get(CarrierEthernetService.class);
         if (evcFragArg != null) {
             ceManager.setEvcFragmentation(Boolean.parseBoolean(evcFragArg));
         } else {
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetListEvcsCommand.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetListEvcsCommand.java
index ee1148f..77f3283 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetListEvcsCommand.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetListEvcsCommand.java
@@ -16,9 +16,9 @@
 package org.onosproject.ecord.carrierethernet.cli.commands;
 
 import org.apache.karaf.shell.commands.Command;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetVirtualConnection;
 import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
+import org.onosproject.ecord.carrierethernet.app.CarrierEthernetVirtualConnection;
 
 import java.util.Collection;
 
@@ -31,7 +31,7 @@
 
     @Override
     protected void execute() {
-        CarrierEthernetManager ceManager = get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = get(CarrierEthernetService.class);
         printServices(ceManager.evcMap().values());
     }
 
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetListFcsCommand.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetListFcsCommand.java
index af09013..bdf04c7 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetListFcsCommand.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetListFcsCommand.java
@@ -17,8 +17,8 @@
 
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 import org.onosproject.ecord.carrierethernet.app.CarrierEthernetForwardingConstruct;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
 
 import java.util.Collection;
 
@@ -31,7 +31,7 @@
 
     @Override
     protected void execute() {
-        CarrierEthernetManager ceManager = get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = get(CarrierEthernetService.class);
         printFcs(ceManager.fcMap().values());
     }
 
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetListLtpsCommand.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetListLtpsCommand.java
index 588d40d..7edaed1 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetListLtpsCommand.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetListLtpsCommand.java
@@ -16,9 +16,9 @@
 package org.onosproject.ecord.carrierethernet.cli.commands;
 
 import org.apache.karaf.shell.commands.Command;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetLogicalTerminationPoint;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
 import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
+import org.onosproject.ecord.carrierethernet.app.CarrierEthernetLogicalTerminationPoint;
 
 import java.util.Collection;
 
@@ -31,7 +31,7 @@
 
     @Override
     protected void execute() {
-        CarrierEthernetManager evcManager = get(CarrierEthernetManager.class);
+        CarrierEthernetService evcManager = get(CarrierEthernetService.class);
         // Populate global LTP map
         evcManager.getLtpsFromTopo(false, false).forEach(ltp -> evcManager.addGlobalLtp(ltp));
         printLtps(evcManager.ltpMap().values());
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetListUnisCommand.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetListUnisCommand.java
index ce635f2..39084a7 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetListUnisCommand.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetListUnisCommand.java
@@ -16,8 +16,8 @@
 package org.onosproject.ecord.carrierethernet.cli.commands;
 
 import org.apache.karaf.shell.commands.Command;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
 import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 import org.onosproject.ecord.carrierethernet.app.CarrierEthernetUni;
 
 import java.util.Collection;
@@ -31,7 +31,7 @@
 
     @Override
     protected void execute() {
-        CarrierEthernetManager ceManager = get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = get(CarrierEthernetService.class);
         // Populate global UNI map
         ceManager.getUnisFromTopo(false, false).forEach(uni -> ceManager.addGlobalUni(uni));
         printUnis(ceManager.getUniMap().values());
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetPktOpticalTopoCommand.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetPktOpticalTopoCommand.java
index a6a9341..6c82bed 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetPktOpticalTopoCommand.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetPktOpticalTopoCommand.java
@@ -18,7 +18,7 @@
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 import org.onosproject.ecord.carrierethernet.app.CarrierEthernetProvisioner;
 
 /**
@@ -44,7 +44,7 @@
                 // FIXME: Temporary hack - disable EVC fragmentation for pkt-optical
                 // This is needed because CarrierEthernetManager performs path computation
                 // during the fragmentation process
-                CarrierEthernetManager ceManager = get(CarrierEthernetManager.class);
+                CarrierEthernetService ceManager = get(CarrierEthernetService.class);
                 if (pktOpticalTopo) {
                     ceManager.setEvcFragmentation(false);
                 } else {
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveAllEvcsCommand.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveAllEvcsCommand.java
index d25f1e1..d1c623e 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveAllEvcsCommand.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveAllEvcsCommand.java
@@ -16,8 +16,8 @@
 package org.onosproject.ecord.carrierethernet.cli.commands;
 
 import org.apache.karaf.shell.commands.Command;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
 import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 
 /**
  * CLI command for removing all installed CE services.
@@ -28,7 +28,7 @@
 
     @Override
     protected void execute() {
-        CarrierEthernetManager ceManager = get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = get(CarrierEthernetService.class);
         ceManager.removeAllEvcs();
     }
 }
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveAllFcsCommand.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveAllFcsCommand.java
index 2cfcd55..8faf980 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveAllFcsCommand.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveAllFcsCommand.java
@@ -17,7 +17,7 @@
 
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 
 /**
  * CLI command for removing all installed Carrier Ethernet Forwarding Constructs.
@@ -28,7 +28,7 @@
 
     @Override
     protected void execute() {
-        CarrierEthernetManager ceManager = get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = get(CarrierEthernetService.class);
         ceManager.removeAllFcs();
     }
 }
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveEvcCommand.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveEvcCommand.java
index 6bfdf1a..144d92e 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveEvcCommand.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveEvcCommand.java
@@ -18,8 +18,8 @@
 import com.google.common.collect.Lists;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
 import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 
 import java.util.List;
 
@@ -36,7 +36,7 @@
 
     @Override
     protected void execute() {
-        CarrierEthernetManager ceManager = get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = get(CarrierEthernetService.class);
         argEvcIdList.forEach(argEvcId -> ceManager.removeEvc(argEvcId));
     }
 }
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveFcCommand.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveFcCommand.java
index f07cc37..f134f6a 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveFcCommand.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveFcCommand.java
@@ -19,7 +19,7 @@
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 
 import java.util.List;
 
@@ -36,7 +36,7 @@
 
     @Override
     protected void execute() {
-        CarrierEthernetManager ceManager = get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = get(CarrierEthernetService.class);
         argFcIdList.forEach(argFcId -> ceManager.removeFc(argFcId));
     }
 }
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveLtpCommand.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveLtpCommand.java
index 47b2a46..475d9ad 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveLtpCommand.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveLtpCommand.java
@@ -18,8 +18,8 @@
 import com.google.common.collect.Lists;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
 import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 
 import java.util.List;
 
@@ -36,7 +36,7 @@
 
     @Override
     protected void execute() {
-        CarrierEthernetManager ceManager = get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = get(CarrierEthernetService.class);
         argLtpIdList.forEach(argLtpId -> ceManager.removeGlobalLtp(argLtpId));
     }
 }
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveUniCommand.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveUniCommand.java
index e50ec7a..a14747b 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveUniCommand.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/commands/CarrierEthernetRemoveUniCommand.java
@@ -18,8 +18,8 @@
 import com.google.common.collect.Lists;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
 import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 
 import java.util.List;
 
@@ -36,7 +36,7 @@
 
     @Override
     protected void execute() {
-        CarrierEthernetManager ceManager = get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = get(CarrierEthernetService.class);
         argUniIdList.forEach(argUniId -> ceManager.removeGlobalUni(argUniId));
     }
 }
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetEvcCompleter.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetEvcCompleter.java
index 155357e..abf678e 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetEvcCompleter.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetEvcCompleter.java
@@ -17,8 +17,8 @@
 
 import org.apache.karaf.shell.console.Completer;
 import org.apache.karaf.shell.console.completer.StringsCompleter;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
 import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 
 import java.util.List;
 import java.util.SortedSet;
@@ -28,7 +28,7 @@
     public int complete(String buffer, int cursor, List<String> candidates) {
 
         StringsCompleter delegate = new UniqueStringsCompleter();
-        CarrierEthernetManager ceManager = AbstractShellCommand.get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = AbstractShellCommand.get(CarrierEthernetService.class);
         SortedSet<String> strings = delegate.getStrings();
         ceManager.evcMap().keySet().forEach(evcId -> strings.add(evcId));
         return delegate.complete(buffer, cursor, candidates);
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetFcCompleter.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetFcCompleter.java
index ba8a7d4..7da86e1 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetFcCompleter.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetFcCompleter.java
@@ -17,8 +17,8 @@
 
 import org.apache.karaf.shell.console.Completer;
 import org.apache.karaf.shell.console.completer.StringsCompleter;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
 import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 
 import java.util.List;
 import java.util.SortedSet;
@@ -28,7 +28,7 @@
     public int complete(String buffer, int cursor, List<String> candidates) {
 
         StringsCompleter delegate = new UniqueStringsCompleter();
-        CarrierEthernetManager ceManager = AbstractShellCommand.get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = AbstractShellCommand.get(CarrierEthernetService.class);
         SortedSet<String> strings = delegate.getStrings();
         ceManager.fcMap().keySet().forEach(fcId -> strings.add(fcId));
         return delegate.complete(buffer, cursor, candidates);
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetLtpCompleter.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetLtpCompleter.java
index e72c431..a1ffd47 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetLtpCompleter.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetLtpCompleter.java
@@ -18,7 +18,7 @@
 import org.apache.karaf.shell.console.completer.StringsCompleter;
 import org.onosproject.cli.AbstractCompleter;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 
 import java.util.List;
 import java.util.SortedSet;
@@ -33,7 +33,7 @@
         StringsCompleter delegate = new UniqueStringsCompleter();
         SortedSet<String> strings = delegate.getStrings();
 
-        CarrierEthernetManager ceManager = AbstractShellCommand.get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = AbstractShellCommand.get(CarrierEthernetService.class);
         ceManager.ltpMap().keySet().forEach(ltpId -> strings.add(ltpId));
 
         return delegate.complete(buffer, cursor, candidates);
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetPotentialLtpCompleter.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetPotentialLtpCompleter.java
index 29c5179..18fb49a 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetPotentialLtpCompleter.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetPotentialLtpCompleter.java
@@ -18,7 +18,7 @@
 import org.apache.karaf.shell.console.completer.StringsCompleter;
 import org.onosproject.cli.AbstractCompleter;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 
 import java.util.List;
 import java.util.SortedSet;
@@ -33,7 +33,7 @@
         StringsCompleter delegate = new UniqueStringsCompleter();
         SortedSet<String> strings = delegate.getStrings();
 
-        CarrierEthernetManager ceManager = AbstractShellCommand.get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = AbstractShellCommand.get(CarrierEthernetService.class);
         ceManager.getLtpsFromTopo(true, true).forEach(ltp -> strings.add(ltp.id()));
 
         return delegate.complete(buffer, cursor, candidates);
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetPotentialUniCompleter.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetPotentialUniCompleter.java
index c0bdbfe..e4a5dd3 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetPotentialUniCompleter.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetPotentialUniCompleter.java
@@ -18,7 +18,7 @@
 import org.apache.karaf.shell.console.completer.StringsCompleter;
 import org.onosproject.cli.AbstractCompleter;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 
 import java.util.List;
 import java.util.SortedSet;
@@ -34,7 +34,7 @@
         StringsCompleter delegate = new UniqueStringsCompleter();
         SortedSet<String> strings = delegate.getStrings();
 
-        CarrierEthernetManager ceManager = AbstractShellCommand.get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = AbstractShellCommand.get(CarrierEthernetService.class);
         ceManager.getUnisFromTopo(true, true).forEach(uni -> strings.add(uni.id()));
 
         return delegate.complete(buffer, cursor, candidates);
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetUniCompleter.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetUniCompleter.java
index ef00759..1d019b9 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetUniCompleter.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetUniCompleter.java
@@ -18,7 +18,7 @@
 import org.apache.karaf.shell.console.completer.StringsCompleter;
 import org.onosproject.cli.AbstractCompleter;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 
 import java.util.List;
 import java.util.SortedSet;
@@ -34,7 +34,7 @@
         StringsCompleter delegate = new UniqueStringsCompleter();
         SortedSet<String> strings = delegate.getStrings();
 
-        CarrierEthernetManager ceManager = AbstractShellCommand.get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = AbstractShellCommand.get(CarrierEthernetService.class);
         ceManager.getUniMap().keySet().forEach(uniId -> strings.add(uniId));
 
         return delegate.complete(buffer, cursor, candidates);
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetValidLtpCompleter.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetValidLtpCompleter.java
index da9335d..6233972 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetValidLtpCompleter.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetValidLtpCompleter.java
@@ -18,7 +18,7 @@
 import org.apache.karaf.shell.console.completer.StringsCompleter;
 import org.onosproject.cli.AbstractCompleter;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 
 import java.util.List;
 import java.util.SortedSet;
@@ -33,7 +33,7 @@
         StringsCompleter delegate = new UniqueStringsCompleter();
         SortedSet<String> strings = delegate.getStrings();
 
-        CarrierEthernetManager ceManager = AbstractShellCommand.get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = AbstractShellCommand.get(CarrierEthernetService.class);
         ceManager.getLtpsFromTopo(false, false).forEach(ltp -> strings.add(ltp.id()));
 
         return delegate.complete(buffer, cursor, candidates);
diff --git a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetValidUniCompleter.java b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetValidUniCompleter.java
index d0f49de..24a6543 100644
--- a/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetValidUniCompleter.java
+++ b/carrierethernet/src/main/java/org/onosproject/ecord/carrierethernet/cli/completers/CarrierEthernetValidUniCompleter.java
@@ -18,7 +18,7 @@
 import org.apache.karaf.shell.console.completer.StringsCompleter;
 import org.onosproject.cli.AbstractCompleter;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 
 import java.util.List;
 import java.util.SortedSet;
@@ -34,7 +34,7 @@
         StringsCompleter delegate = new UniqueStringsCompleter();
         SortedSet<String> strings = delegate.getStrings();
 
-        CarrierEthernetManager ceManager = AbstractShellCommand.get(CarrierEthernetManager.class);
+        CarrierEthernetService ceManager = AbstractShellCommand.get(CarrierEthernetService.class);
         ceManager.getUnisFromTopo(false, false).forEach(uni -> strings.add(uni.id()));
 
         return delegate.complete(buffer, cursor, candidates);
diff --git a/mef-nrp-api/src/main/java/org/onosproject/mefnrpapi/api/impl/ForwardingConstructApiServiceImpl.java b/mef-nrp-api/src/main/java/org/onosproject/mefnrpapi/api/impl/ForwardingConstructApiServiceImpl.java
index 086eead..39dc531 100644
--- a/mef-nrp-api/src/main/java/org/onosproject/mefnrpapi/api/impl/ForwardingConstructApiServiceImpl.java
+++ b/mef-nrp-api/src/main/java/org/onosproject/mefnrpapi/api/impl/ForwardingConstructApiServiceImpl.java
@@ -1,26 +1,25 @@
 package org.onosproject.mefnrpapi.api.impl;
 
 import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 import org.onosproject.ecord.carrierethernet.app.CarrierEthernetForwardingConstruct;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
 import org.onosproject.mefnrpapi.api.ApiResponseMessage;
-import org.onosproject.mefnrpapi.api.NotFoundException;
 import org.onosproject.mefnrpapi.api.ForwardingConstructApiService;
+import org.onosproject.mefnrpapi.api.NotFoundException;
 import org.onosproject.mefnrpapi.api.model.ForwardingConstruct;
 import org.onosproject.mefnrpapi.translate.NrpApiTranslator;
 
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.SecurityContext;
 import javax.ws.rs.core.UriBuilder;
 import javax.ws.rs.core.UriInfo;
-import javax.ws.rs.core.Context;
-
 import java.util.LinkedList;
 import java.util.List;
 
 public class ForwardingConstructApiServiceImpl extends ForwardingConstructApiService {
 
-    CarrierEthernetManager ceManager = AbstractShellCommand.get(CarrierEthernetManager.class);
+    CarrierEthernetService ceManager = AbstractShellCommand.get(CarrierEthernetService.class);
 
     private static final String CHECK_LOG = " Check ONOS log for details.";
     private static final String NOT_TRANSLATED = "Could not translate FC.";
diff --git a/mef-nrp-api/src/main/java/org/onosproject/mefnrpapi/api/impl/LogicalTerminationPointApiServiceImpl.java b/mef-nrp-api/src/main/java/org/onosproject/mefnrpapi/api/impl/LogicalTerminationPointApiServiceImpl.java
index e7152c5..f0d612d 100644
--- a/mef-nrp-api/src/main/java/org/onosproject/mefnrpapi/api/impl/LogicalTerminationPointApiServiceImpl.java
+++ b/mef-nrp-api/src/main/java/org/onosproject/mefnrpapi/api/impl/LogicalTerminationPointApiServiceImpl.java
@@ -1,11 +1,11 @@
 package org.onosproject.mefnrpapi.api.impl;
 
 import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 import org.onosproject.ecord.carrierethernet.app.CarrierEthernetLogicalTerminationPoint;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
 import org.onosproject.mefnrpapi.api.ApiResponseMessage;
-import org.onosproject.mefnrpapi.api.NotFoundException;
 import org.onosproject.mefnrpapi.api.LogicalTerminationPointApiService;
+import org.onosproject.mefnrpapi.api.NotFoundException;
 import org.onosproject.mefnrpapi.api.model.LayerProtocol;
 import org.onosproject.mefnrpapi.api.model.LogicalTerminationPoint;
 import org.onosproject.mefnrpapi.api.model.LpSpec;
@@ -21,8 +21,8 @@
 
 public class LogicalTerminationPointApiServiceImpl extends LogicalTerminationPointApiService {
 
-    CarrierEthernetManager ceManager =
-            AbstractShellCommand.get(CarrierEthernetManager.class);
+    CarrierEthernetService ceManager =
+            AbstractShellCommand.get(CarrierEthernetService.class);
 
     private static final String NOT_TRANSLATED = "Could not translate LTP.";
     private static final String EXISTS = "LTP already exists.";
diff --git a/mef-sca-api/src/main/java/org/onosproject/mefscaapi/api/impl/ScaEthFdFrEcApiServiceImpl.java b/mef-sca-api/src/main/java/org/onosproject/mefscaapi/api/impl/ScaEthFdFrEcApiServiceImpl.java
index 8a3c8cc..49f3b0f 100755
--- a/mef-sca-api/src/main/java/org/onosproject/mefscaapi/api/impl/ScaEthFdFrEcApiServiceImpl.java
+++ b/mef-sca-api/src/main/java/org/onosproject/mefscaapi/api/impl/ScaEthFdFrEcApiServiceImpl.java
@@ -1,7 +1,7 @@
 package org.onosproject.mefscaapi.api.impl;
 
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 import org.onosproject.ecord.carrierethernet.app.CarrierEthernetVirtualConnection;
 import org.onosproject.mefscaapi.api.ApiResponseMessage;
 import org.onosproject.mefscaapi.api.SCAETHFDFrECApiService;
@@ -13,15 +13,14 @@
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.SecurityContext;
 import javax.ws.rs.core.UriBuilder;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
 import java.util.LinkedList;
 import java.util.List;
 
+import static org.slf4j.LoggerFactory.getLogger;
+
 public class ScaEthFdFrEcApiServiceImpl extends SCAETHFDFrECApiService {
 
-    CarrierEthernetManager ceManager = AbstractShellCommand.get(CarrierEthernetManager.class);
+    CarrierEthernetService ceManager = AbstractShellCommand.get(CarrierEthernetService.class);
 
     private static final Logger log = getLogger(ScaEthFdFrEcApiServiceImpl.class);
 
diff --git a/mef-sca-api/src/main/java/org/onosproject/mefscaapi/api/impl/ScaEthFppUniNApiServiceImpl.java b/mef-sca-api/src/main/java/org/onosproject/mefscaapi/api/impl/ScaEthFppUniNApiServiceImpl.java
index 3090404..6494fe8 100755
--- a/mef-sca-api/src/main/java/org/onosproject/mefscaapi/api/impl/ScaEthFppUniNApiServiceImpl.java
+++ b/mef-sca-api/src/main/java/org/onosproject/mefscaapi/api/impl/ScaEthFppUniNApiServiceImpl.java
@@ -1,7 +1,7 @@
 package org.onosproject.mefscaapi.api.impl;
 
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.ecord.carrierethernet.app.CarrierEthernetManager;
+import org.onosproject.ecord.carrierethernet.api.CarrierEthernetService;
 import org.onosproject.ecord.carrierethernet.app.CarrierEthernetUni;
 import org.onosproject.mefscaapi.api.ApiResponseMessage;
 import org.onosproject.mefscaapi.api.NotFoundException;
@@ -18,7 +18,7 @@
 
 public class ScaEthFppUniNApiServiceImpl extends SCAETHFPPUNINApiService {
 
-    CarrierEthernetManager ceManager = AbstractShellCommand.get(CarrierEthernetManager.class);
+    CarrierEthernetService ceManager = AbstractShellCommand.get(CarrierEthernetService.class);
 
     private static final String NOT_TRANSLATED = "Could not translate UNI.";
     private static final String EXISTS = "UNI already exists.";