diff --git a/app/src/main/java/org/opencord/bng/cli/AddAttachment.java b/app/src/main/java/org/opencord/bng/cli/AddAttachment.java
index bea0c1f..cdd9fb7 100644
--- a/app/src/main/java/org/opencord/bng/cli/AddAttachment.java
+++ b/app/src/main/java/org/opencord/bng/cli/AddAttachment.java
@@ -31,9 +31,9 @@
 import org.onosproject.core.CoreService;
 import org.onosproject.net.ConnectPoint;
 import org.opencord.bng.BngAttachment;
-import org.opencord.bng.BngManager;
+import org.opencord.bng.impl.BngManager;
 import org.opencord.bng.BngService;
-import org.opencord.bng.BngUtils;
+import org.opencord.bng.impl.BngUtils;
 import org.opencord.bng.PppoeBngAttachment;
 
 @Service
diff --git a/app/src/main/java/org/opencord/bng/config/netcfg.json b/app/src/main/java/org/opencord/bng/config/netcfg.json
index be62c34..ecd0ae4 100644
--- a/app/src/main/java/org/opencord/bng/config/netcfg.json
+++ b/app/src/main/java/org/opencord/bng/config/netcfg.json
@@ -3,7 +3,7 @@
     "org.opencord.bng": {
       "pppoerelay": {
         "oltConnectPoint": "device:asg1/128",
-        "pppoeServerConnectPoint": "device:asg1/140",
+        "pppoeServerConnectPoint": "device:asg1/140"
       },
       "bng": {
         "bnguDeviceId": "device:asg1"
diff --git a/app/src/main/java/org/opencord/bng/BngManager.java b/app/src/main/java/org/opencord/bng/impl/BngManager.java
similarity index 98%
rename from app/src/main/java/org/opencord/bng/BngManager.java
rename to app/src/main/java/org/opencord/bng/impl/BngManager.java
index 4cdd558..1f399e1 100644
--- a/app/src/main/java/org/opencord/bng/BngManager.java
+++ b/app/src/main/java/org/opencord/bng/impl/BngManager.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.opencord.bng;
+package org.opencord.bng.impl;
 
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Maps;
@@ -48,6 +48,9 @@
 import org.onosproject.net.host.HostProviderService;
 import org.onosproject.net.link.LinkService;
 import org.onosproject.net.provider.ProviderId;
+import org.opencord.bng.BngAttachment;
+import org.opencord.bng.BngService;
+import org.opencord.bng.PppoeBngAttachment;
 import org.opencord.bng.config.BngConfig;
 import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
@@ -68,7 +71,7 @@
 /**
  * Implements the network level BNG service API to manage attachments.
  */
-@Component(immediate = true, service = BngService.class)
+@Component(immediate = true)
 public class BngManager implements HostProvider, BngService {
     public static final String BNG_APP = "org.opencord.bng";
 
@@ -188,7 +191,7 @@
             // If the BNG user plane is not available, or the attachment is not connected to
             // the correct BNG user planee, accept anyway the attachment.
             // Check if the attachment is correctly connected to the BNG device when that device will show up.
-            log.info("BNG user planee not available, attachment accepted but not programmed");
+            log.info("BNG user plane not available, attachment accepted but not programmed");
         }
         log.info("PPPoE Attachment created/updated: {}", pppoeAttachment);
         registeredAttachment.put(attachmentKey, Pair.of(pppoeAttachment, hostId));
diff --git a/app/src/main/java/org/opencord/bng/BngStatsManager.java b/app/src/main/java/org/opencord/bng/impl/BngStatsManager.java
similarity index 93%
rename from app/src/main/java/org/opencord/bng/BngStatsManager.java
rename to app/src/main/java/org/opencord/bng/impl/BngStatsManager.java
index 827b552..6a2a716 100644
--- a/app/src/main/java/org/opencord/bng/BngStatsManager.java
+++ b/app/src/main/java/org/opencord/bng/impl/BngStatsManager.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.opencord.bng;
+package org.opencord.bng.impl;
 
 import com.google.common.collect.Maps;
 import org.onlab.util.SharedScheduledExecutors;
@@ -27,6 +27,12 @@
 import org.onosproject.net.behaviour.BngProgrammable;
 import org.onosproject.net.device.DeviceService;
 import org.onosproject.net.pi.runtime.PiCounterCellData;
+import org.opencord.bng.BngAttachment;
+import org.opencord.bng.BngService;
+import org.opencord.bng.BngStatsEvent;
+import org.opencord.bng.BngStatsEventListener;
+import org.opencord.bng.BngStatsEventSubject;
+import org.opencord.bng.BngStatsService;
 import org.osgi.service.component.ComponentContext;
 import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
@@ -43,11 +49,10 @@
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
-import static org.opencord.bng.OsgiPropertyConstants.BNG_STATISTICS_PROBE_RATE;
-import static org.opencord.bng.OsgiPropertyConstants.BNG_STATISTICS_PROBE_RATE_DEFAULT;
+import static org.opencord.bng.impl.OsgiPropertyConstants.BNG_STATISTICS_PROBE_RATE;
+import static org.opencord.bng.impl.OsgiPropertyConstants.BNG_STATISTICS_PROBE_RATE_DEFAULT;
 
 @Component(immediate = true,
-        service = BngStatsService.class,
         property = {
                 BNG_STATISTICS_PROBE_RATE + ":Long=" + BNG_STATISTICS_PROBE_RATE_DEFAULT,
         }
diff --git a/app/src/main/java/org/opencord/bng/BngUtils.java b/app/src/main/java/org/opencord/bng/impl/BngUtils.java
similarity index 96%
rename from app/src/main/java/org/opencord/bng/BngUtils.java
rename to app/src/main/java/org/opencord/bng/impl/BngUtils.java
index c4cbe64..17c04dc 100644
--- a/app/src/main/java/org/opencord/bng/BngUtils.java
+++ b/app/src/main/java/org/opencord/bng/impl/BngUtils.java
@@ -14,12 +14,13 @@
  * limitations under the License.
  */
 
-package org.opencord.bng;
+package org.opencord.bng.impl;
 
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
 import org.onosproject.net.ConnectPoint;
+import org.opencord.bng.PppoeEventSubject;
 
 public final class BngUtils {
 
diff --git a/app/src/main/java/org/opencord/bng/OsgiPropertyConstants.java b/app/src/main/java/org/opencord/bng/impl/OsgiPropertyConstants.java
similarity index 96%
rename from app/src/main/java/org/opencord/bng/OsgiPropertyConstants.java
rename to app/src/main/java/org/opencord/bng/impl/OsgiPropertyConstants.java
index 962d1e1..1bd86a0 100644
--- a/app/src/main/java/org/opencord/bng/OsgiPropertyConstants.java
+++ b/app/src/main/java/org/opencord/bng/impl/OsgiPropertyConstants.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.opencord.bng;
+package org.opencord.bng.impl;
 
 public final class OsgiPropertyConstants {
 
diff --git a/app/src/main/java/org/opencord/bng/PppoeHandlerRelay.java b/app/src/main/java/org/opencord/bng/impl/PppoeHandlerRelay.java
similarity index 98%
rename from app/src/main/java/org/opencord/bng/PppoeHandlerRelay.java
rename to app/src/main/java/org/opencord/bng/impl/PppoeHandlerRelay.java
index da77299..56566c3 100644
--- a/app/src/main/java/org/opencord/bng/PppoeHandlerRelay.java
+++ b/app/src/main/java/org/opencord/bng/impl/PppoeHandlerRelay.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.opencord.bng;
+package org.opencord.bng.impl;
 
 import com.google.common.collect.Maps;
 import org.onlab.packet.Data;
@@ -44,6 +44,12 @@
 import org.onosproject.net.packet.PacketContext;
 import org.onosproject.net.packet.PacketProcessor;
 import org.onosproject.net.packet.PacketService;
+import org.opencord.bng.BngAttachment;
+import org.opencord.bng.PppoeBngAttachment;
+import org.opencord.bng.PppoeBngControlHandler;
+import org.opencord.bng.PppoeEvent;
+import org.opencord.bng.PppoeEventListener;
+import org.opencord.bng.PppoeEventSubject;
 import org.opencord.bng.config.PppoeRelayConfig;
 import org.opencord.bng.packets.GenericPpp;
 import org.opencord.bng.packets.Ipcp;
@@ -67,7 +73,7 @@
 
 import static org.onosproject.net.config.basics.SubjectFactories.APP_SUBJECT_FACTORY;
 
-@Component(immediate = true, service = PppoeBngControlHandler.class)
+@Component(immediate = true)
 public class PppoeHandlerRelay
         extends AbstractListenerManager<PppoeEvent, PppoeEventListener>
         implements PppoeBngControlHandler {
diff --git a/app/src/main/java/org/opencord/bng/SimpleAttachmentEventHandler.java b/app/src/main/java/org/opencord/bng/impl/SimpleAttachmentEventHandler.java
similarity index 93%
rename from app/src/main/java/org/opencord/bng/SimpleAttachmentEventHandler.java
rename to app/src/main/java/org/opencord/bng/impl/SimpleAttachmentEventHandler.java
index eb4ecd6..eb14ecb 100644
--- a/app/src/main/java/org/opencord/bng/SimpleAttachmentEventHandler.java
+++ b/app/src/main/java/org/opencord/bng/impl/SimpleAttachmentEventHandler.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.opencord.bng;
+package org.opencord.bng.impl;
 
 import org.glassfish.jersey.internal.guava.Sets;
 import org.onlab.util.Tools;
@@ -22,6 +22,13 @@
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreService;
 import org.onosproject.store.service.StorageService;
+import org.opencord.bng.BngAttachment;
+import org.opencord.bng.BngService;
+import org.opencord.bng.PppoeBngAttachment;
+import org.opencord.bng.PppoeBngControlHandler;
+import org.opencord.bng.PppoeEvent;
+import org.opencord.bng.PppoeEventListener;
+import org.opencord.bng.PppoeEventSubject;
 import org.osgi.service.component.ComponentContext;
 import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
@@ -36,15 +43,14 @@
 import java.util.Properties;
 import java.util.Set;
 
-import static org.opencord.bng.OsgiPropertyConstants.ENABLE_LOCAL_EVENT_HANDLER;
-import static org.opencord.bng.OsgiPropertyConstants.ENABLE_LOCAL_EVENT_HANDLER_DEFAULT;
+import static org.opencord.bng.impl.OsgiPropertyConstants.ENABLE_LOCAL_EVENT_HANDLER;
+import static org.opencord.bng.impl.OsgiPropertyConstants.ENABLE_LOCAL_EVENT_HANDLER_DEFAULT;
 
 /**
  * Service to intercept the PPPoE Handler events and trigger the creation of a
  * new attachment in BNG service.
  */
 @Component(immediate = true,
-        service = SimpleAttachmentEventHandler.class,
         property = {
                 ENABLE_LOCAL_EVENT_HANDLER + ":Boolean=" + ENABLE_LOCAL_EVENT_HANDLER_DEFAULT,
         }
diff --git a/app/src/main/java/org/opencord/bng/package-info.java b/app/src/main/java/org/opencord/bng/impl/package-info.java
similarity index 95%
rename from app/src/main/java/org/opencord/bng/package-info.java
rename to app/src/main/java/org/opencord/bng/impl/package-info.java
index 170eb9c..c8954f0 100644
--- a/app/src/main/java/org/opencord/bng/package-info.java
+++ b/app/src/main/java/org/opencord/bng/impl/package-info.java
@@ -17,4 +17,4 @@
 /**
  * BNG application.
  */
-package org.opencord.bng;
+package org.opencord.bng.impl;
