diff --git a/upnp/extra/src/main/java/org/apache/felix/upnp/extra/util/EventSource.java b/upnp/extra/src/main/java/org/apache/felix/upnp/extra/util/EventSource.java
index a2147ab..fca147e 100644
--- a/upnp/extra/src/main/java/org/apache/felix/upnp/extra/util/EventSource.java
+++ b/upnp/extra/src/main/java/org/apache/felix/upnp/extra/util/EventSource.java
@@ -22,7 +22,7 @@
 import java.beans.PropertyChangeListener;
 
 /* 
-* @author <a href="mailto:felix-dev@incubator.apache.org">Felix Project Team</a>
+* @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
 */
 public interface EventSource {
 	void addPropertyChangeListener(PropertyChangeListener listener);
diff --git a/upnp/extra/src/main/java/org/apache/felix/upnp/extra/util/UPnPSubscriber.java b/upnp/extra/src/main/java/org/apache/felix/upnp/extra/util/UPnPSubscriber.java
index 8f8c6e1..3d80a93 100644
--- a/upnp/extra/src/main/java/org/apache/felix/upnp/extra/util/UPnPSubscriber.java
+++ b/upnp/extra/src/main/java/org/apache/felix/upnp/extra/util/UPnPSubscriber.java
@@ -33,7 +33,7 @@
 import org.osgi.service.upnp.UPnPService;
 
 /* 
-* @author <a href="mailto:felix-dev@incubator.apache.org">Felix Project Team</a>
+* @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
 */
 public class UPnPSubscriber {
 	private BundleContext context;
diff --git a/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/Activator.java b/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/Activator.java
index 0f1c940..ddf50ea 100644
--- a/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/Activator.java
+++ b/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/Activator.java
@@ -30,6 +30,8 @@
 import org.osgi.service.http.HttpService;
 import org.osgi.service.upnp.UPnPDevice;
 
+import org.apache.felix.upnp.sample.binaryLight.devices.LightDevice;
+
 
 /* 
 * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
@@ -65,31 +67,28 @@
 	
 	private void doServletRegistration() {
         ServiceReference sr = context.getServiceReference(HttpService.class.getName());
-        if (sr != null){
-        	httpServ = (HttpService) context.getService(sr);
-        	
-            try
-            {
-             Servlet presentationServlet = new PresentationServlet(light.getModel());
-             httpServ.registerServlet("/upnp/binaryLight", presentationServlet,null, null);
-            }
-            catch (Exception e)
-            {
-                System.err.println("Exception registering presentationServlet:" + e);
-            }
-            
-            
-            try
-            {
-                httpServ.registerResources("/upnp/binaryLight/images",
-                        "/org/apache/felix/upnp/sample/binaryLight/images", null);
-            }
-            catch (Exception e)
-            {
-                System.err.println("Exception registering /resource:" + e);
-            }
+        if (sr != null) {
+			httpServ = (HttpService) context.getService(sr);
 
-        }		
+			try {
+				Servlet presentationServlet = new PresentationServlet(light
+						.getModel());
+				httpServ.registerServlet("/upnp/binaryLight",
+						presentationServlet, null, null);
+			} catch (Exception e) {
+				System.err.println("Exception registering presentationServlet:"
+						+ e);
+			}
+
+			try {
+				httpServ.registerResources("/upnp/binaryLight/images",
+						"/org/apache/felix/upnp/sample/binaryLight/images",
+						null);
+			} catch (Exception e) {
+				System.err.println("Exception registering /resource:" + e);
+			}
+
+		}		
 	}
 
 	/**
diff --git a/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/LightModel.java b/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/LightModel.java
index 79681f5..374cc20 100644
--- a/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/LightModel.java
+++ b/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/LightModel.java
@@ -77,17 +77,20 @@
 	}
 	
 	public void setFailure(boolean value){
-		boolean oldFailure = failure;
-		boolean oldStatus = status;
 		failure = value;
 		if (failure){
 			status = false;
 		}
-		else if (target){
-			status = true;
+		else {
+			if (target)		{
+				status = true;
+			}
+			else{
+				status = false;
+			}
 		}
-		propertySupport.firePropertyChange("Status",oldStatus,status);
-		propertySupport.firePropertyChange("Failure",oldFailure,failure);
+		propertySupport.firePropertyChange("Status",!status,status);
+		propertySupport.firePropertyChange("Failure",!failure,failure);
 	}
 	
 
diff --git a/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/LightUI.java b/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/LightUI.java
index 0c28ebd..2e56106 100644
--- a/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/LightUI.java
+++ b/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/LightUI.java
@@ -20,6 +20,7 @@
 package org.apache.felix.upnp.sample.binaryLight;
 
 import java.awt.BorderLayout;
+import java.awt.event.ActionEvent;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.awt.event.WindowAdapter;
@@ -28,6 +29,7 @@
 import java.beans.PropertyChangeListener;
 import java.net.URL;
 
+import javax.swing.AbstractAction;
 import javax.swing.Icon;
 import javax.swing.ImageIcon;
 import javax.swing.JButton;
@@ -48,6 +50,8 @@
     private final static ImageIcon LIGHT_FAIL = LightUI.loadIcon("LightFail.gif","FAILURE");
 	private final JLabel label = new JLabel();
     private LightModel model;
+	private JButton btnSwitch;
+	private JButton btnFailure;
    
 	public LightUI(LightModel model)   {
 		super("Felix UPnP BinaryLight");
@@ -79,7 +83,7 @@
 	        }
 	
 		pack();
-		show();
+		setVisible(true);
     }
 	
 	private JPanel doMainPanel(){
@@ -105,10 +109,37 @@
 	          
 	private JPanel doControlPanel(){
 		JPanel panel = new JPanel();
-		JButton btnSwitch = new JButton("On");
-		JButton btnFailure = new JButton("Failure");
+		btnSwitch = new JButton("On");
+		btnFailure = new JButton("Break");
 		panel.add(btnSwitch);
 		panel.add(btnFailure);
+		
+		btnSwitch.addActionListener(new AbstractAction(){
+			public void actionPerformed(ActionEvent e) {
+				if (btnSwitch.getText().equals("On")){
+					btnSwitch.setText("Off");
+	                model.switchOn();
+				}else {
+					btnSwitch.setText("On");
+	                model.switchOff();					
+				}
+			}			
+		});
+		
+		btnFailure.addActionListener(new AbstractAction(){
+			public void actionPerformed(ActionEvent e) {
+				if (btnFailure.getText().equals("Break")){
+					btnFailure.setText("Repair");
+					btnSwitch.setEnabled(false);
+	                model.setFailure(true);
+				} else {
+					btnFailure.setText("Break");
+					btnSwitch.setEnabled(true);
+	                model.setFailure(false);					
+				}
+			}			
+		});
+		
 		return panel;
 	}
 	
@@ -129,23 +160,25 @@
 	 */
     public void propertyChange(PropertyChangeEvent evt) {
     	String property = evt.getPropertyName();
-    	System.out.println("Light changed property::"+property);
     	boolean value = ((Boolean) evt.getNewValue()).booleanValue();
-    	if (property.equals("Status")){
-    		if (value)
+    	System.out.println("BinaryLight property::"+property + " changed to:" +  value);
+        	if (property.equals("Status")){
+    		if (value){
     			label.setIcon(LIGHT_ON);
-    		else
+    			btnSwitch.setText("Off");
+    		}
+    		else{
     			label.setIcon(LIGHT_OFF);
+    			btnSwitch.setText("On");
+    		}
     	}
     	else if (property.equals("Failure")){            
     		if (value)
     			label.setIcon(LIGHT_FAIL);
-    		else
-    			label.setIcon(LIGHT_OFF);
     	}
     	getContentPane().validate();
     	repaint();
-		
+
 	}
 
 	
diff --git a/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/GetStatusAction.java b/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/actions/GetStatusAction.java
similarity index 95%
rename from upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/GetStatusAction.java
rename to upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/actions/GetStatusAction.java
index 84eee26..9b19b6a 100644
--- a/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/GetStatusAction.java
+++ b/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/actions/GetStatusAction.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.felix.upnp.sample.binaryLight;
+package org.apache.felix.upnp.sample.binaryLight.actions;
 
 import java.util.Dictionary;
 import java.util.Hashtable;
@@ -25,6 +25,8 @@
 import org.osgi.service.upnp.UPnPAction;
 import org.osgi.service.upnp.UPnPStateVariable;
 
+import org.apache.felix.upnp.sample.binaryLight.LightModel;
+
 /* 
 * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
 */
diff --git a/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/GetTargetAction.java b/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/actions/GetTargetAction.java
similarity index 95%
rename from upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/GetTargetAction.java
rename to upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/actions/GetTargetAction.java
index ee0be24..b40d2ef 100644
--- a/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/GetTargetAction.java
+++ b/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/actions/GetTargetAction.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.felix.upnp.sample.binaryLight;
+package org.apache.felix.upnp.sample.binaryLight.actions;
 
 import java.util.Dictionary;
 import java.util.Hashtable;
@@ -25,6 +25,8 @@
 import org.osgi.service.upnp.UPnPAction;
 import org.osgi.service.upnp.UPnPStateVariable;
 
+import org.apache.felix.upnp.sample.binaryLight.LightModel;
+
 /* 
 * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
 */
diff --git a/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/SetTargetAction.java b/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/actions/SetTargetAction.java
similarity index 95%
rename from upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/SetTargetAction.java
rename to upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/actions/SetTargetAction.java
index a39c893..cac1e44 100644
--- a/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/SetTargetAction.java
+++ b/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/actions/SetTargetAction.java
@@ -17,13 +17,15 @@
  * under the License.
  */
 
-package org.apache.felix.upnp.sample.binaryLight;
+package org.apache.felix.upnp.sample.binaryLight.actions;
 
 import java.util.Dictionary;
 
 import org.osgi.service.upnp.UPnPAction;
 import org.osgi.service.upnp.UPnPStateVariable;
 
+import org.apache.felix.upnp.sample.binaryLight.LightModel;
+
 /* 
 * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
 */
diff --git a/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/LightDevice.java b/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/devices/LightDevice.java
similarity index 89%
rename from upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/LightDevice.java
rename to upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/devices/LightDevice.java
index 3473109..7b244be 100644
--- a/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/LightDevice.java
+++ b/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/devices/LightDevice.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.felix.upnp.sample.binaryLight;
+package org.apache.felix.upnp.sample.binaryLight.devices;
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;
@@ -30,6 +30,10 @@
 import org.osgi.service.upnp.UPnPService;
 
 import org.apache.felix.upnp.extra.util.UPnPEventNotifier;
+import org.apache.felix.upnp.sample.binaryLight.LightModel;
+import org.apache.felix.upnp.sample.binaryLight.LightUI;
+import org.apache.felix.upnp.sample.binaryLight.icons.LightIcon;
+import org.apache.felix.upnp.sample.binaryLight.services.PowerSwitchService;
 
 /* 
 * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
@@ -77,11 +81,11 @@
 		//dictionary.put(UPnPDevice.DEVICE_CATEGORY,new String[]{UPnPDevice.DEVICE_CATEGORY});
 		dictionary.put(UPnPDevice.FRIENDLY_NAME,"Felix OSGi-UPnP BinaryLight");
 		dictionary.put(UPnPDevice.MANUFACTURER,"Apache Software Foundation");
-		dictionary.put(UPnPDevice.MANUFACTURER_URL,"http://incubator.apache.org/felix/");
+		dictionary.put(UPnPDevice.MANUFACTURER_URL,"http://felix.apache.org");
 		dictionary.put(UPnPDevice.MODEL_DESCRIPTION,"A BinaryLight device to test OSGi to UPnP service export");
 		dictionary.put(UPnPDevice.MODEL_NAME,"Lucciola");
 		dictionary.put(UPnPDevice.MODEL_NUMBER,"1.0");
-		dictionary.put(UPnPDevice.MODEL_URL,"http://incubator.apache.org/felix/lucciola");
+		dictionary.put(UPnPDevice.MODEL_URL,"http://felix.apache.org/site/upnp-example-binarylight.html");
 		String port = context.getProperty("org.osgi.service.http.port");
         InetAddress inet;
 		try {
diff --git a/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/LightIcon.java b/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/icons/LightIcon.java
similarity index 96%
rename from upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/LightIcon.java
rename to upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/icons/LightIcon.java
index 7b537f9..6f54e3b 100644
--- a/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/LightIcon.java
+++ b/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/icons/LightIcon.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.felix.upnp.sample.binaryLight;
+package org.apache.felix.upnp.sample.binaryLight.icons;
 import java.io.IOException;
 import java.io.InputStream;
 
diff --git a/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/PowerSwitchService.java b/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/services/PowerSwitchService.java
similarity index 86%
rename from upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/PowerSwitchService.java
rename to upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/services/PowerSwitchService.java
index e735d4b..c4fc2ac 100644
--- a/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/PowerSwitchService.java
+++ b/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/services/PowerSwitchService.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.felix.upnp.sample.binaryLight;
+package org.apache.felix.upnp.sample.binaryLight.services;
 
 import java.util.HashMap;
 
@@ -25,6 +25,13 @@
 import org.osgi.service.upnp.UPnPService;
 import org.osgi.service.upnp.UPnPStateVariable;
 
+import org.apache.felix.upnp.sample.binaryLight.LightModel;
+import org.apache.felix.upnp.sample.binaryLight.actions.GetStatusAction;
+import org.apache.felix.upnp.sample.binaryLight.actions.GetTargetAction;
+import org.apache.felix.upnp.sample.binaryLight.actions.SetTargetAction;
+import org.apache.felix.upnp.sample.binaryLight.statevariables.StatusStateVariable;
+import org.apache.felix.upnp.sample.binaryLight.statevariables.TargetStateVariable;
+
 /* 
 * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
 */
diff --git a/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/StatusStateVariable.java b/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/statevariables/StatusStateVariable.java
similarity index 94%
rename from upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/StatusStateVariable.java
rename to upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/statevariables/StatusStateVariable.java
index 559d8b3..1963b59 100644
--- a/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/StatusStateVariable.java
+++ b/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/statevariables/StatusStateVariable.java
@@ -17,9 +17,11 @@
  * under the License.
  */
 
-package org.apache.felix.upnp.sample.binaryLight;
+package org.apache.felix.upnp.sample.binaryLight.statevariables;
 import org.osgi.service.upnp.UPnPLocalStateVariable;
 
+import org.apache.felix.upnp.sample.binaryLight.LightModel;
+
 public class StatusStateVariable implements UPnPLocalStateVariable{
 	
 	final private String NAME = "Status";
diff --git a/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/TargetStateVariable.java b/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/statevariables/TargetStateVariable.java
similarity index 97%
rename from upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/TargetStateVariable.java
rename to upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/statevariables/TargetStateVariable.java
index 6b5033c..cfa8918 100644
--- a/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/TargetStateVariable.java
+++ b/upnp/samples/binarylight/src/main/java/org/apache/felix/upnp/sample/binaryLight/statevariables/TargetStateVariable.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.felix.upnp.sample.binaryLight;
+package org.apache.felix.upnp.sample.binaryLight.statevariables;
 import org.osgi.service.upnp.UPnPStateVariable;
 
 public class TargetStateVariable implements UPnPStateVariable{
diff --git a/upnp/samples/binarylight/src/main/resources/org/apache/felix/upnp/sample/binaryLight/images/LightFail.gif b/upnp/samples/binarylight/src/main/resources/org/apache/felix/upnp/sample/binaryLight/images/LightFail.gif
index 974194b..2863dc3 100644
--- a/upnp/samples/binarylight/src/main/resources/org/apache/felix/upnp/sample/binaryLight/images/LightFail.gif
+++ b/upnp/samples/binarylight/src/main/resources/org/apache/felix/upnp/sample/binaryLight/images/LightFail.gif
Binary files differ
diff --git a/upnp/samples/clock/src/main/java/org/apache/felix/upnp/sample/clock/ClockDevice.java b/upnp/samples/clock/src/main/java/org/apache/felix/upnp/sample/clock/ClockDevice.java
index 67cea89..a8c249d 100644
--- a/upnp/samples/clock/src/main/java/org/apache/felix/upnp/sample/clock/ClockDevice.java
+++ b/upnp/samples/clock/src/main/java/org/apache/felix/upnp/sample/clock/ClockDevice.java
@@ -66,12 +66,12 @@
 		//dictionary.put(UPnPDevice.DEVICE_CATEGORY,new String[]{UPnPDevice.DEVICE_CATEGORY});
 		dictionary.put(UPnPDevice.FRIENDLY_NAME,"Felix OSGi-UPnP Clock");
 		dictionary.put(UPnPDevice.MANUFACTURER,"Apache Software Foundation");
-		dictionary.put(UPnPDevice.MANUFACTURER_URL,"http://incubator.apache.org/felix/");
+		dictionary.put(UPnPDevice.MANUFACTURER_URL,"http://felix.apache.org");
 		dictionary.put(UPnPDevice.MODEL_DESCRIPTION,"A CyberLink Clock device clone to test OSGi to UPnP service export");
 		dictionary.put(UPnPDevice.MODEL_NAME,"DolceDormire");
 		dictionary.put(UPnPDevice.MODEL_NUMBER,"1.0");
-		dictionary.put(UPnPDevice.MODEL_URL,"http://incubator.apache.org/felix/DolceDormire");
-		dictionary.put(UPnPDevice.PRESENTATION_URL,"http://incubator.apache.org/felix/dolceDormire/presentation");
+		dictionary.put(UPnPDevice.MODEL_URL,"http://felix.apache.org/site/upnp-example-clock.html");
+		//dictionary.put(UPnPDevice.PRESENTATION_URL,"http://felix.apache.org/dolceDormire/presentation");
 		dictionary.put(UPnPDevice.SERIAL_NUMBER,"123456789");
 		dictionary.put(UPnPDevice.TYPE,"urn:schemas-upnp-org:device:clock:1");
 		dictionary.put(UPnPDevice.UDN,DEVICE_ID);
diff --git a/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/TvDevice.java b/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/TvDevice.java
index 616c605..d5df2f1 100644
--- a/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/TvDevice.java
+++ b/upnp/samples/tv/src/main/java/org/apache/felix/upnp/sample/tv/TvDevice.java
@@ -100,12 +100,12 @@
         );
 		dictionary.put(UPnPDevice.FRIENDLY_NAME,"Felix Sample Tv");
 		dictionary.put(UPnPDevice.MANUFACTURER,"Apache Software Foundation");
-		dictionary.put(UPnPDevice.MANUFACTURER_URL,"http://incubator.apache.org/felix/");
+		dictionary.put(UPnPDevice.MANUFACTURER_URL,"http://felix.apache.org");
 		dictionary.put(UPnPDevice.MODEL_DESCRIPTION,"A CyberLink Tv device clone to test OSGi to UPnP service import");
 		dictionary.put(UPnPDevice.MODEL_NAME,"BimbiTv");
 		dictionary.put(UPnPDevice.MODEL_NUMBER,"1.0");
-		dictionary.put(UPnPDevice.MODEL_URL,"http://incubator.apache.org/felix/BimbiTv");
-		dictionary.put(UPnPDevice.PRESENTATION_URL,"http://incubator.apache.org/felix/BimbiTv/presentation");
+		dictionary.put(UPnPDevice.MODEL_URL,"http://felix.apache.org/site/upnp-example-tv.html");
+		//dictionary.put(UPnPDevice.PRESENTATION_URL,"http://felix.apache.org/BimbiTv/presentation");
 		dictionary.put(UPnPDevice.SERIAL_NUMBER,"123456789");
 		dictionary.put(UPnPDevice.TYPE,"urn:schemas-upnp-org:device:tv:1");
 		dictionary.put(UPnPDevice.UDN,DEVICE_ID);
