diff --git a/features/features.xml b/features/features.xml
index 7d23fb5..594dc69 100644
--- a/features/features.xml
+++ b/features/features.xml
@@ -130,10 +130,4 @@
         <bundle>mvn:org.onosproject/onos-core-trivial/@ONOS-VERSION</bundle>
     </feature>
     
-    <feature name="onos-netconf" version="@FEATURE-VERSION"
-             description="ONOS Netconf providers">
-        <feature>onos-api</feature>        
-        <bundle>mvn:org.onosproject/onos-netconf-provider-device/@ONOS-VERSION</bundle>        
-    </feature>
-
 </features>
diff --git a/providers/netconf/app/app.xml b/providers/netconf/app/app.xml
new file mode 100644
index 0000000..f2d4762
--- /dev/null
+++ b/providers/netconf/app/app.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2015 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.
+  -->
+<app name="org.onosproject.netconf" origin="ON.Lab" version="${project.version}"
+     featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
+     features="${project.artifactId}">
+    <description>${project.description}</description>
+
+    <artifact>mvn:${project.groupId}/onos-netconf-provider-device/${project.version}</artifact>
+    <!-- Question: should there be the jnc stuff here? Or is it just for testing -->
+</app>
diff --git a/providers/netconf/app/features.xml b/providers/netconf/app/features.xml
new file mode 100644
index 0000000..6a3d1a2
--- /dev/null
+++ b/providers/netconf/app/features.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+  ~ Copyright 2015 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.
+  -->
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="${project.artifactId}-${project.version}">
+    <repository>mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features</repository>
+    <feature name="${project.artifactId}" version="${project.version}"
+             description="${project.description}">
+        <feature>onos-api</feature>
+        <bundle>mvn:io.netty/netty/3.9.2.Final</bundle>
+        <bundle>mvn:${project.groupId}/onos-netconf-provider-device/${project.version}</bundle>
+        <!-- Question: should there be the jnc stuff here? Or is it just for testing -->
+    </feature>
+</features>
+
diff --git a/providers/netconf/app/pom.xml b/providers/netconf/app/pom.xml
new file mode 100644
index 0000000..cd307b2
--- /dev/null
+++ b/providers/netconf/app/pom.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2015 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.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.onosproject</groupId>
+        <artifactId>onos-netconf-providers</artifactId>
+        <version>1.2.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>onos-netconf</artifactId>
+    <packaging>pom</packaging>
+
+    <description>NetConf protocol southbound providers</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-netconf-provider-device</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <!-- TODO: add other dependencies here as more bundles are added to the app -->
+    </dependencies>
+
+</project>
diff --git a/providers/netconf/device/pom.xml b/providers/netconf/device/pom.xml
index 192d8e3..0ebe079 100644
--- a/providers/netconf/device/pom.xml
+++ b/providers/netconf/device/pom.xml
@@ -14,134 +14,138 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-        <modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
 
-        <parent>
+    <parent>
+        <groupId>org.onosproject</groupId>
+        <artifactId>onos-netconf-providers</artifactId>
+        <version>1.2.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>onos-netconf-provider-device</artifactId>
+    <packaging>bundle</packaging>
+
+    <description>ONOS Netconf protocol device provider</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.compendium</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>ch.ethz.ganymed</groupId>
+            <artifactId>ganymed-ssh2</artifactId>
+            <version>262</version>
+        </dependency>
+        <dependency>
+            <!-- TODO: change this appropriately when the official TailF JNC is available -->
             <groupId>org.onosproject</groupId>
-            <artifactId>onos-netconf-providers</artifactId>
-            <version>1.2.0-SNAPSHOT</version>
-            <relativePath>../pom.xml</relativePath>
-        </parent>
+            <artifactId>jnc</artifactId>
+            <version>1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.jdom</groupId>
+            <artifactId>jdom2</artifactId>
+            <version>2.0.5</version>
+        </dependency>
+        <dependency>
+            <groupId>jaxen</groupId>
+            <artifactId>jaxen</artifactId>
+            <version>1.1.4</version>
+            <optional>true</optional>
+        </dependency>
+    </dependencies>
 
-        <artifactId>onos-netconf-provider-device</artifactId>
-        <packaging>bundle</packaging>
-
-        <description>ONOS Netconf protocol device provider</description>
-        <build>
-           <plugins>
-                <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-shade-plugin</artifactId>
-                    <version>2.3</version>
-                    <configuration>
-                        <filters>
-                            <filter>
-                                <artifact>com.tailf:JNC</artifact>
-                                <includes>
-                                    <include>com/tailf/jnc/**</include>
-                                </includes>
-                            </filter>
-                            <filter>
-                                <artifact>ch.ethz.ganymed:ganymed-ssh2</artifact>
-                                <includes>
-                                    <include>ch/ethz/ssh2/**</include>
-                                </includes>
-                            </filter>
-                            <filter>
-                                <artifact>org.jdom:jdom2</artifact>
-                                <includes>
-                                    <include>org/jdom2/**</include>
-                                </includes>
-                            </filter>
-                        </filters>
-                    </configuration>
-                    <executions>
-                        <execution>
-                            <phase>package</phase>
-                            <goals>
-                                <goal>shade</goal>
-                            </goals>
-                        </execution>
-                    </executions>
-                </plugin>
-                <plugin>
-                    <groupId>org.apache.felix</groupId>
-                    <artifactId>maven-scr-plugin</artifactId>
-                </plugin>
-                <plugin>
-                    <groupId>org.apache.felix</groupId>
-                    <artifactId>maven-bundle-plugin</artifactId>
-                    <configuration>
-                        <instructions>
-                            <Export-Package>
-                                com.tailf.jnc,
-                                ch.ethz.ssh2,
-                                ch.ethz.ssh2.auth,
-                                ch.ethz.ssh2.channel,
-                                ch.ethz.ssh2.crypto,
-                                ch.ethz.ssh2.crypto.cipher,
-                                ch.ethz.ssh2.crypto.dh,
-                                ch.ethz.ssh2.crypto.digest,
-                                ch.ethz.ssh2.log,
-                                ch.ethz.ssh2.packets,
-                                ch.ethz.ssh2.server,
-                                ch.ethz.ssh2.sftp,
-                                ch.ethz.ssh2.signature,
-                                ch.ethz.ssh2.transport,
-                                ch.ethz.ssh2.util,
-                                org.jdom2,
-                                org.jdom2.input,
-                                org.jdom2.output,
-                                org.jdom2.adapters,
-                                org.jdom2.filter,
-                                org.jdom2.internal,
-                                org.jdom2.located,
-                                org.jdom2.transform,
-                                org.jdom2.util,
-                                org.jdom2.xpath,
-                                org.jdom2.input.sax,
-                                org.jdom2.input.stax,
-                                org.jdom2.output.support,
-                                org.jdom2.xpath.jaxen,
-                                org.jdom2.xpath.util
-                            </Export-Package>
-                        </instructions>
-                    </configuration>
-                </plugin>
-                <plugin>
-                    <groupId>org.onosproject</groupId>
-                    <artifactId>onos-maven-plugin</artifactId>
-                </plugin>
-            </plugins>
-        </build>
-        <dependencies>
-            <dependency>
-                <groupId>org.osgi</groupId>
-                <artifactId>org.osgi.compendium</artifactId>
-            </dependency>
-            <dependency>
-                <groupId>ch.ethz.ganymed</groupId>
-                <artifactId>ganymed-ssh2</artifactId>
-                <version>262</version>
-            </dependency>
-            <dependency>
-                <!-- TODO: change this appropriately when the official TailF JNC is available -->
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
+                <version>2.3</version>
+                <configuration>
+                    <filters>
+                        <filter>
+                            <artifact>com.tailf:JNC</artifact>
+                            <includes>
+                                <include>com/tailf/jnc/**</include>
+                            </includes>
+                        </filter>
+                        <filter>
+                            <artifact>ch.ethz.ganymed:ganymed-ssh2</artifact>
+                            <includes>
+                                <include>ch/ethz/ssh2/**</include>
+                            </includes>
+                        </filter>
+                        <filter>
+                            <artifact>org.jdom:jdom2</artifact>
+                            <includes>
+                                <include>org/jdom2/**</include>
+                            </includes>
+                        </filter>
+                    </filters>
+                </configuration>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-scr-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <configuration>
+                    <instructions>
+                        <Export-Package>
+                            com.tailf.jnc,
+                            ch.ethz.ssh2,
+                            ch.ethz.ssh2.auth,
+                            ch.ethz.ssh2.channel,
+                            ch.ethz.ssh2.crypto,
+                            ch.ethz.ssh2.crypto.cipher,
+                            ch.ethz.ssh2.crypto.dh,
+                            ch.ethz.ssh2.crypto.digest,
+                            ch.ethz.ssh2.log,
+                            ch.ethz.ssh2.packets,
+                            ch.ethz.ssh2.server,
+                            ch.ethz.ssh2.sftp,
+                            ch.ethz.ssh2.signature,
+                            ch.ethz.ssh2.transport,
+                            ch.ethz.ssh2.util,
+                            org.jdom2,
+                            org.jdom2.input,
+                            org.jdom2.output,
+                            org.jdom2.adapters,
+                            org.jdom2.filter,
+                            org.jdom2.internal,
+                            org.jdom2.located,
+                            org.jdom2.transform,
+                            org.jdom2.util,
+                            org.jdom2.xpath,
+                            org.jdom2.input.sax,
+                            org.jdom2.input.stax,
+                            org.jdom2.output.support,
+                            org.jdom2.xpath.jaxen,
+                            org.jdom2.xpath.util
+                        </Export-Package>
+                    </instructions>
+                </configuration>
+            </plugin>
+            <plugin>
                 <groupId>org.onosproject</groupId>
-                <artifactId>jnc</artifactId>
-                <version>1.0</version>
-            </dependency>
-            <dependency>
-                <groupId>org.jdom</groupId>
-                <artifactId>jdom2</artifactId>
-                <version>2.0.5</version>
-            </dependency>
-            <dependency>
-                <groupId>jaxen</groupId>
-                <artifactId>jaxen</artifactId>
-                <version>1.1.4</version>
-                <optional>true</optional>
-            </dependency>
-        </dependencies>
+                <artifactId>onos-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
 </project>
diff --git a/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java b/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java
index 9336adb..5fb6ead 100644
--- a/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java
+++ b/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java
@@ -39,6 +39,7 @@
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.onlab.packet.ChassisId;
+import org.onosproject.cfg.ComponentConfigService;
 import org.onosproject.cluster.ClusterService;
 import org.onosproject.net.Device;
 import org.onosproject.net.DeviceId;
@@ -78,9 +79,11 @@
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected ClusterService clusterService;
 
+    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    protected ComponentConfigService cfgService;
+
     private ExecutorService deviceBuilder = Executors
-            .newFixedThreadPool(1,
-                                groupedThreads("onos/netconf", "device-creator"));
+            .newFixedThreadPool(1, groupedThreads("onos/netconf", "device-creator"));
 
     // Delay between events in ms.
     private static final int EVENTINTERVAL = 5;
@@ -90,7 +93,7 @@
     @Property(name = "devConfigs", value = "", label = "Instance-specific configurations")
     private String devConfigs = null;
 
-    @Property(name = "devPasswords", value = "", label = "Instace-specific password")
+    @Property(name = "devPasswords", value = "", label = "Instance-specific password")
     private String devPasswords = null;
 
     /**
@@ -102,13 +105,15 @@
 
     @Activate
     public void activate(ComponentContext context) {
-        log.info("Netconf Device Provider Started");
+        cfgService.registerProperties(getClass());
         providerService = providerRegistry.register(this);
         modified(context);
+        log.info("Started");
     }
 
     @Deactivate
     public void deactivate(ComponentContext context) {
+        cfgService.unregisterProperties(getClass(), false);
         try {
             for (Entry<DeviceId, NetconfDevice> deviceEntry : netconfDeviceMap
                     .entrySet()) {
@@ -134,13 +139,9 @@
         }
         Dictionary<?, ?> properties = context.getProperties();
         String deviceCfgValue = get(properties, "devConfigs");
-        log.info("Getting Device configuration from cfg file: "
-                + deviceCfgValue);
+        log.info("Settings: devConfigs={}", deviceCfgValue);
         if (!isNullOrEmpty(deviceCfgValue)) {
             addOrRemoveDevicesConfig(deviceCfgValue);
-        } else {
-            log.info("Device Configuration value receiviced from the property 'devConfigs': "
-                    + deviceCfgValue + ", is not valid");
         }
     }
 
@@ -148,11 +149,9 @@
         for (String deviceEntry : deviceConfig.split(",")) {
             NetconfDevice device = processDeviceEntry(deviceEntry);
             if (device != null) {
-                log.info("Device Detail: " + "username: "
-                        + device.getUsername() + ", host: "
-                        + device.getSshHost() + ", port: "
-                        + device.getSshPort() + " device state: "
-                        + device.getDeviceState().name());
+                log.info("Device Detail: username: {}, host={}, port={}, state={}",
+                        device.getUsername(), device.getSshHost(),
+                         device.getSshPort(), device.getDeviceState().name());
                 if (device.isActive()) {
                     deviceBuilder.submit(new DeviceCreator(device, true));
                 } else {
diff --git a/providers/netconf/pom.xml b/providers/netconf/pom.xml
index b351d46..511fe04 100644
--- a/providers/netconf/pom.xml
+++ b/providers/netconf/pom.xml
@@ -33,6 +33,7 @@
 
     <modules>
         <module>device</module>
+        <module>app</module>
     </modules>
 
     <dependencies>
