diff --git a/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/Activator.java b/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/Activator.java
index a003621..f3c637f 100644
--- a/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/Activator.java
+++ b/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/Activator.java
@@ -19,6 +19,13 @@
 
 package org.apache.felix.upnp.basedriver;
 
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.Enumeration;
+import java.util.Properties;
+
 import org.cybergarage.upnp.UPnP;
 
 import org.osgi.framework.BundleActivator;
@@ -62,6 +69,8 @@
     private DriverControllerImpl drvController;
     private ServiceRegistration drvControllerRegistrar;
     
+    private Properties configuration;
+    
 	
 	/**
 	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
@@ -71,6 +80,8 @@
         
  		Activator.bc = context;				
 		
+ 		doInitProperties();
+ 		
  		doInitLogger();
  		
  		doInitUPnPStack();
@@ -84,7 +95,33 @@
 	}
 
 
-    /**
+    private void doInitProperties() {
+    	/*
+    	 * Loading default properties value from the embeeded properties file
+    	 */
+    	configuration = new Properties();    
+    	try {    		
+    		configuration.load(Activator.class.getResourceAsStream("upnp.properties"));
+		} catch (Exception ignored) {
+			ignored.printStackTrace();
+		}
+		
+		/*
+		 * Overiding default value with the properties defined in the System
+		 */
+		Enumeration e = configuration.propertyNames();
+		Properties system = System.getProperties();
+		while (e.hasMoreElements()) {
+			String name = (String) e.nextElement();
+			if(system.containsKey(name)){
+				configuration.setProperty(name, system.getProperty(name));
+			}
+		}
+		
+	}
+
+
+	/**
 	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
 	 */
 	public void stop(BundleContext context) throws Exception {
@@ -109,13 +146,6 @@
 		Activator.logger=null;
 		Activator.bc = null;
 	}
-	
-	public final String getPropertyDefault(BundleContext bc, String propertyName, String defaultValue ){
-		String value = bc.getProperty(propertyName);
-		if(value == null)
-			return defaultValue;
-		return value;
-	}
 
 	/**
 	 * Method used for initilizing the general properties of the UPnP Base Driver
@@ -124,10 +154,10 @@
 	 */
 	private void doInitLogger() {
 		
- 	    String levelStr = getPropertyDefault(Activator.bc,Constants.BASEDRIVER_LOG_PROP,"2");	    
+ 	    String levelStr = configuration.getProperty(Constants.BASEDRIVER_LOG_PROP,"2");	    
 		Activator.logger = new Logger(levelStr);
 		
-	    String cyberLog = getPropertyDefault(Activator.bc,Constants.CYBERDOMO_LOG_PROP,"false");
+	    String cyberLog = configuration.getProperty(Constants.CYBERDOMO_LOG_PROP,"false");
 	    Activator.logger.setCyberDebug(cyberLog);	    
 
 	}
@@ -138,15 +168,15 @@
 	 * @since 0.3
 	 */
 	private void doInitUPnPStack() {
-		boolean useOnlyIPV4 = Boolean.valueOf(getPropertyDefault(Activator.bc,Constants.NET_ONLY_IPV4_PROP,"true")).booleanValue();
+		boolean useOnlyIPV4 = Boolean.valueOf(configuration.getProperty(Constants.NET_ONLY_IPV4_PROP,"true")).booleanValue();
 	    if (useOnlyIPV4) UPnP.setEnable(UPnP.USE_ONLY_IPV4_ADDR);
     	else UPnP.setDisable(UPnP.USE_ONLY_IPV4_ADDR);
 
-		boolean useOnlyIPV6 = Boolean.valueOf(getPropertyDefault(Activator.bc,Constants.NET_ONLY_IPV6_PROP,"true")).booleanValue();
+		boolean useOnlyIPV6 = Boolean.valueOf(configuration.getProperty(Constants.NET_ONLY_IPV6_PROP,"true")).booleanValue();
 	    if (useOnlyIPV6) UPnP.setEnable(UPnP.USE_ONLY_IPV6_ADDR);
     	else UPnP.setDisable(UPnP.USE_ONLY_IPV6_ADDR);
 
-		boolean useLoopback = Boolean.valueOf(getPropertyDefault(Activator.bc,Constants.NET_USE_LOOPBACK_PROP,"true")).booleanValue();
+		boolean useLoopback = Boolean.valueOf(configuration.getProperty(Constants.NET_USE_LOOPBACK_PROP,"true")).booleanValue();
     	if (useLoopback) UPnP.setEnable(UPnP.USE_LOOPBACK_ADDR);
     	else UPnP.setDisable(UPnP.USE_LOOPBACK_ADDR);
     	
@@ -161,7 +191,7 @@
 	 * @throws InvalidSyntaxException
 	 */
 	private void doInitExporter() throws InvalidSyntaxException {		
-		boolean useExporter = Boolean.valueOf(getPropertyDefault(Activator.bc,Constants.EXPORTER_ENABLED_PROP,"true")).booleanValue();
+		boolean useExporter = Boolean.valueOf(configuration.getProperty(Constants.EXPORTER_ENABLED_PROP,"true")).booleanValue();
       	if (!useExporter) return;
    		      	
 		this.queue = new RootDeviceExportingQueue();
@@ -178,7 +208,7 @@
 	 * @since 0.3
 	 */
 	private void doInitImporter() {
-		boolean useImporter = Boolean.valueOf(getPropertyDefault(Activator.bc,Constants.IMPORTER_ENABLED_PROP,"true")).booleanValue();
+		boolean useImporter = Boolean.valueOf(configuration.getProperty(Constants.IMPORTER_ENABLED_PROP,"true")).booleanValue();
       	if (!useImporter) return;
    		
    		
diff --git a/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/util/Constants.java b/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/util/Constants.java
index 89ca806..d4f374c 100644
--- a/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/util/Constants.java
+++ b/upnp/basedriver/src/main/java/org/apache/felix/upnp/basedriver/util/Constants.java
@@ -27,15 +27,64 @@
 	 * device service is been created by UPnP base Driver. <br>
 	 * The value of the does not carry any mean. <br>
 	 * The name of the property is "UPnP.device.import".
+	 * 
+	 * @since 0.1
 	 */
 	public final static String UPNP_IMPORT = "UPnP.device.imported"; 
 	
+	
+	
+	/**
+	 * Set the verbosity of the logging message of the bundle
+	 * 
+	 * @since 0.1 
+	 */
 	public final static String BASEDRIVER_LOG_PROP = "felix.upnpbase.log";
+	
+	/**
+	 * If equal to "true" enables the CyberDomo UPnP SDK debugging messages
+	 * 
+	 * @since 0.1
+	 */
 	public final static String CYBERDOMO_LOG_PROP = "felix.upnpbase.cyberdomo.log";
+	
+	
+	
+	/**
+	 * If equal to "true" enables Exporter facility of the UPnP Base Driver
+	 * 
+	 * @since 0.3
+	 */
 	public final static String EXPORTER_ENABLED_PROP = "felix.upnpbase.exporter.enabled";
+	
+	/**
+	 * If equal to "true" enables Importer facility of the UPnP Base Driver
+	 * 
+	 * @since 0.3
+	 */
 	public final static String IMPORTER_ENABLED_PROP = "felix.upnpbase.importer.enabled";
+	
+	
+	
+	/**
+	 * If equal to "true" enables the use of NICs with IPv4 configured and only IPv4 addresses will be used
+	 * 
+	 * @since 0.3 
+	 */
 	public final static String NET_ONLY_IPV4_PROP = "felix.upnpbase.cyberdomo.net.onlyIPV4";
+	
+	/**
+	 * If equal to "true" enables the use of NICs with IPv6 configured and only IPv6 addresses will be used<br>
+	 * <b>NOTE:</b>This property is used only on JDK 1.4 or greater  
+	 * @since 0.3
+	 */
 	public final static String NET_ONLY_IPV6_PROP = "felix.upnpbase.cyberdomo.net.onlyIPV6";
+	
+	/**
+	 * If equal to "true" enables the use of Loopback addresses, either IPv6 and IPv4
+	 * 
+	 * @since 0.3 
+	 */
 	public final static String NET_USE_LOOPBACK_PROP = "felix.upnpbase.cyberdomo.net.loopback";
 
 }
diff --git a/upnp/basedriver/src/main/resources/README b/upnp/basedriver/src/main/resources/README
new file mode 100644
index 0000000..adb9955
--- /dev/null
+++ b/upnp/basedriver/src/main/resources/README
@@ -0,0 +1,28 @@
+This bundle tries to be complaint to the UPnP Base Driver OSGi R4 specification.
+
+At the moment the bundle do not support the following requirement:
+ - upnp.ssdp.address Configuration Service
+ - exported device changes: if a service already exported as UPnP Device changes 
+   it's own configuration, i.e.: implements new service, changes the friendly name, etc.,
+   the new service description is not reflected on the UPnP Device
+ - icon for exported device is not tested
+ - no localization support
+
+The bundle provides extra capabilities:
+ - the bundles implements the org.apache.felix.upnp.extra.controller specification
+
+Finally the bundle can be configured by setting the following properties divided by categories:
+1 - LOGGING
+felix.upnpbase.log: integer which identifies the verbosity of the bundle
+felix.upnpbase.cyberdomo.log: boolean which enables or disables the UPnP CyberDomo SDK debugging messages
+2 - FACILITY
+felix.upnpbase.exporter.enabled: boolean which enables or disables the Exporter facilities of the UPnP Base Driver
+felix.upnpbase.importer.enabled: boolean which enables or disables the Exporter facilities of the UPnP Base Driver
+3 - NETWORK 
+felix.upnpbase.cyberdomo.net.loopback: boolean which enables or disables the use of Loopback devices
+felix.upnpbase.cyberdomo.net.onlyIPV4: boolean which enables or disables the use of IPv4 addresses
+felix.upnpbase.cyberdomo.net.onlyIPV6: boolean which enables or disables the use of IPv6 addresses (if base driver is running on JDK 1.4 or greater)
+cyberdomo.ssdp.mx: integer which idntifies the value to set in MX packet while performing discovery operation on UPnP
+cyberdomo.ssdp.buffersize: integer which identifies buffer size for UDP packet
+cyberdomo.ssdp.port: integer which identifies the destination port to use for SDDP multicast discovery packet
+ 
\ No newline at end of file
diff --git a/upnp/basedriver/src/main/resources/org/apache/felix/upnp/basedriver/upnp.properties b/upnp/basedriver/src/main/resources/org/apache/felix/upnp/basedriver/upnp.properties
new file mode 100644
index 0000000..45b5e69
--- /dev/null
+++ b/upnp/basedriver/src/main/resources/org/apache/felix/upnp/basedriver/upnp.properties
@@ -0,0 +1,31 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+#
+# Felix UPnP Base Driver properties.
+#
+
+felix.upnpbase.log=2
+felix.upnpbase.exporter.enabled=true
+felix.upnpbase.importer.enabled=true
+felix.upnpbase.cyberdomo.log=false
+felix.upnpbase.cyberdomo.net.loopback=false
+felix.upnpbase.cyberdomo.net.onlyIPV4=true
+felix.upnpbase.cyberdomo.net.onlyIPV6=false
+cyberdomo.ssdp.mx=5
+cyberdomo.ssdp.buffersize=2048
+cyberdomo.ssdp.port=1900
