diff --git a/org.osgi.compendium/src/main/java/info/dmtree/security/DmtPermission.java b/org.osgi.compendium/src/main/java/info/dmtree/security/DmtPermission.java
index 5b85398..0415076 100644
--- a/org.osgi.compendium/src/main/java/info/dmtree/security/DmtPermission.java
+++ b/org.osgi.compendium/src/main/java/info/dmtree/security/DmtPermission.java
@@ -57,7 +57,7 @@
  * returned by {@link #getActions} uses the forms defined by the action
  * constants.
  * 
- * @version $Revision: 5673 $
+ * @version $Revision: 7942 $
  */
 public class DmtPermission extends Permission {
     private static final long serialVersionUID = -1910969921419407809L;
@@ -302,7 +302,7 @@
         // empty tokens (swallowed by StringTokenizer) are not considered errors
         StringTokenizer st = new StringTokenizer(actions, ",");
         while (st.hasMoreTokens()) {
-            String action = st.nextToken();
+            String action = st.nextToken().trim();
             if (action.equalsIgnoreCase(GET)) {
                 mask |= Acl.GET;
             } else if (action.equalsIgnoreCase(ADD)) {
diff --git a/org.osgi.compendium/src/main/java/org/osgi/application/ApplicationContext.java b/org.osgi.compendium/src/main/java/org/osgi/application/ApplicationContext.java
index 41c8864..2420faf 100644
--- a/org.osgi.compendium/src/main/java/org/osgi/application/ApplicationContext.java
+++ b/org.osgi.compendium/src/main/java/org/osgi/application/ApplicationContext.java
@@ -26,7 +26,7 @@
  * <code>ApplicationContext</code> is the access point for an OSGi-aware
  * application to the features of the OSGi Service Platform. Each application
  * instance will have its own <code>ApplicationContext</code> instance, which
- * will not be reused after destorying the corresponding application instace.
+ * will not be reused after destroying the corresponding application instance.
  * <p>
  * Application instances can obtain their <code>ApplicationContext</code> using
  * the {@link Framework#getApplicationContext} method.
@@ -41,7 +41,7 @@
  * 
  * @see org.osgi.application.Framework
  * 
- * @version $Revision: 5673 $
+ * @version $Revision: 7937 $
  */
 public interface ApplicationContext {
 
@@ -49,7 +49,7 @@
      * Adds the specified {@link ApplicationServiceListener} object to this context
      * application instance's list of listeners. The specified <code>referenceName</code> is a 
      * reference name specified in the descriptor of the corresponding application. The registered
-     * <code>listener> will only receive the {@link ApplicationServiceEvent}s realted to the referred service.
+     * <code>listener> will only receive the {@link ApplicationServiceEvent}s related to the referred service.
      * <p>
      * If the <code>listener</code> was already added, calling this method will overwrite the previous
      * registration.
@@ -73,7 +73,7 @@
      * Adds the specified {@link ApplicationServiceListener} object to this context
      * application instance's list of listeners. The <code>referenceNames</code> parameter is an 
      * array of reference name specified in the descriptor of the corresponding application. The registered
-     * <code>listener> will only receive the {@link ApplicationServiceEvent}s realted to the referred 
+     * <code>listener> will only receive the {@link ApplicationServiceEvent}s related to the referred 
      * services.
      * <p>
      * If the <code>listener</code> was already added, calling this method will overwrite the previous
@@ -109,8 +109,8 @@
     public void removeServiceListener(ApplicationServiceListener listener);
     
     /**
-     * This method returns the identifier of the corresponding application instace.
-     * This identifier is guarateed to be unique within the scope of the device.
+     * This method returns the identifier of the corresponding application instance.
+     * This identifier is guaranteed to be unique within the scope of the device.
      * 
       * Note: this method can safely be called on an invalid 
      * <code>ApplicationContext</code> as well.
@@ -122,7 +122,7 @@
     public String getInstanceId();
     
     /**
-     * This method return the identifier of the correspondig application type. This identifier
+     * This method return the identifier of the corresponding application type. This identifier
      * is the same for the different instances of the same application but it is different for
      * different application type.
      * <p>
@@ -198,7 +198,7 @@
     /**
      * Application can query the service properties of a service object
      * it is bound to. Application gets bound to a service object when
-     * it fisrt obtains a reference to the service by calling 
+     * it first obtains a reference to the service by calling 
      * <code>locateService</code> or <code>locateServices</code> methods.
      * 
      * @param serviceObject A service object the application is bound to.
@@ -227,7 +227,7 @@
 	 * {@link org.osgi.framework.BundleContext#getServiceReferences} or 
 	 * {@link org.osgi.framework.BundleContext#getServiceReference} method. Other applications
 	 * can locate this service by using {@link #locateService(String)} or {@link #locateServices(String)}
-	 * method, if they declared their dependece on the registered service.
+	 * method, if they declared their dependence on the registered service.
 	 * 
 	 * <p>
 	 * An application can register a service object that implements the
diff --git a/org.osgi.compendium/src/main/java/org/osgi/application/ApplicationServiceEvent.java b/org.osgi.compendium/src/main/java/org/osgi/application/ApplicationServiceEvent.java
index cbb3ee5..f5ab444 100644
--- a/org.osgi.compendium/src/main/java/org/osgi/application/ApplicationServiceEvent.java
+++ b/org.osgi.compendium/src/main/java/org/osgi/application/ApplicationServiceEvent.java
@@ -38,7 +38,7 @@
  * @see org.osgi.framework.ServiceEvent
  * @see ApplicationServiceListener
  * 
- * @version $Revision: 5673 $
+ * @version $Revision: 7937 $
  */
 public class ApplicationServiceEvent extends ServiceEvent {
 
@@ -65,7 +65,7 @@
 	
 	/**
 	 * This method returns the service object of this service bound to the listener
-	 * application instace. A service object becomes bound to the application when it
+	 * application instance. A service object becomes bound to the application when it
 	 * first obtains a service object reference to that service by calling the
 	 * <code>ApplicationContext.locateService</code> or <code>locateServices</code>
 	 * methods. If the application is not bound to the service yet, this method returns
diff --git a/org.osgi.compendium/src/main/java/org/osgi/application/ApplicationServiceListener.java b/org.osgi.compendium/src/main/java/org/osgi/application/ApplicationServiceListener.java
index 7db5d2b..eb7f0c7 100644
--- a/org.osgi.compendium/src/main/java/org/osgi/application/ApplicationServiceListener.java
+++ b/org.osgi.compendium/src/main/java/org/osgi/application/ApplicationServiceListener.java
@@ -45,14 +45,14 @@
  * the listener if the application which defines the listener object's class has the
  * appropriate <code>ServicePermission</code> to get the service using at
  * least one of the named classes the service was registered under, and the application
- * specified its dependece on the corresponding service in the application metadata.
+ * specified its dependence on the corresponding service in the application metadata.
  * 
  * <p>
  * <code>ApplicationServiceEvent</code> object delivery to <code>ApplicationServiceListener</code>
  * objects is further filtered according to package sources as defined in
  * {@link ServiceReference#isAssignableTo(Bundle, String)}.
  * 
- * @version $Revision: 5673 $
+ * @version $Revision: 7937 $
  * @see ApplicationServiceEvent
  * @see ServicePermission
  */
diff --git a/org.osgi.compendium/src/main/java/org/osgi/service/application/ApplicationDescriptor.java b/org.osgi.compendium/src/main/java/org/osgi/service/application/ApplicationDescriptor.java
index 37287e2..bf50131 100644
--- a/org.osgi.compendium/src/main/java/org/osgi/service/application/ApplicationDescriptor.java
+++ b/org.osgi.compendium/src/main/java/org/osgi/service/application/ApplicationDescriptor.java
@@ -31,7 +31,7 @@
  * information about it. The application descriptor can be used for instance
  * creation.
  * 
- * @version $Revision: 6860 $
+ * @version $Revision: 7938 $
  */
 
 public abstract class ApplicationDescriptor {
@@ -346,7 +346,7 @@
 	 * Called by launch() to create and start a new instance in an application
 	 * model specific way. It also creates and registeres the application handle
 	 * to represent the newly created and started instance and registeres it.
-	 * The method is synchonous, it return only when the application instance was
+	 * The method is synchronous, it return only when the application instance was
 	 * successfully started or the attempt to start it failed.
 	 * <P>
 	 * This method must not return <code>null</code>. If launching the application
@@ -363,7 +363,7 @@
 	 * @throws IllegalStateException
 	 *             if the application descriptor is unregistered
 	 * @throws Exception
-	 *             if any problem occures.
+	 *             if any problem occurs.
 	 */
 	protected abstract ApplicationHandle launchSpecific(Map arguments)
 			throws Exception;
diff --git a/org.osgi.compendium/src/main/java/org/osgi/service/blueprint/container/BlueprintEvent.java b/org.osgi.compendium/src/main/java/org/osgi/service/blueprint/container/BlueprintEvent.java
index 8e0dedf..2233563 100644
--- a/org.osgi.compendium/src/main/java/org/osgi/service/blueprint/container/BlueprintEvent.java
+++ b/org.osgi.compendium/src/main/java/org/osgi/service/blueprint/container/BlueprintEvent.java
@@ -59,7 +59,7 @@
  * @see BlueprintListener
  * @see EventConstants
  * @Immutable
- * @version $Revision: 7591 $
+ * @version $Revision: 7590 $
  */
 public class BlueprintEvent {
 
diff --git a/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/DeploymentAdmin.java b/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/DeploymentAdmin.java
index 0415c68..4647baf 100644
--- a/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/DeploymentAdmin.java
+++ b/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/DeploymentAdmin.java
@@ -84,7 +84,7 @@
     DeploymentPackage[] listDeploymentPackages();
 
     /**
-     * Gets the currenlty installed {@link DeploymentPackage} instance which has the given 
+     * Gets the currently installed {@link DeploymentPackage} instance which has the given 
      * symbolic name.<p>
      * 
      * During an installation of an existing package (update) or during an uninstallation, 
@@ -127,7 +127,7 @@
      * to cancel the processing of excessively long running, or resource consuming install, update
      * or uninstall operations.<p>
      * 
-     * @return true if there was an active session and it was successfully cancelled.
+     * @return true if there was an active session and it was successfully canceled.
      * @throws SecurityException if the caller doesn't have the appropriate 
      *         {@link DeploymentAdminPermission}("&lt;filter&gt;", "cancel") permission.
      * @see DeploymentAdminPermission
diff --git a/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/DeploymentAdminPermission.java b/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/DeploymentAdminPermission.java
index f329e77..86ea75f 100644
--- a/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/DeploymentAdminPermission.java
+++ b/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/DeploymentAdminPermission.java
@@ -58,7 +58,7 @@
  * </pre>
  * The first element of the certificate chain is 
  * not important, only the second (the 
- * Distingushed Name of the root certificate)
+ * Distinguished Name of the root certificate)
  * 
  * <pre>
  * (signer=- ; *, o=Tweety Inc., c=US)
@@ -106,13 +106,13 @@
  * <b>cancel</b><p>
  * 
  * A holder of this permission can cancel an active deployment action. This action being
- * cancelled could correspond to the install, update or uninstall of a deployment package
+ * canceled could correspond to the install, update or uninstall of a deployment package
  * that satisfies the &lt;filter&gt; string. See {@link DeploymentAdmin#cancel}<p>
  * 
  * <b>metadata</b><p>
  * 
  * A holder of this permission is able to retrieve metadata information about a Deployment 
- * Package (e.g. is able to ask its manifest hedares). 
+ * Package (e.g. is able to ask its manifest headers). 
  * See {@link org.osgi.service.deploymentadmin.DeploymentPackage#getBundle(String)},
  * {@link org.osgi.service.deploymentadmin.DeploymentPackage#getBundleInfos()},
  * {@link org.osgi.service.deploymentadmin.DeploymentPackage#getHeader(String)}, 
@@ -120,7 +120,7 @@
  * {@link org.osgi.service.deploymentadmin.DeploymentPackage#getResourceProcessor(String)}, 
  * {@link org.osgi.service.deploymentadmin.DeploymentPackage#getResources()}<p>
  *
- * The actions string is converted to lowercase before processing.
+ * The actions string is converted to lower case before processing.
  */
 public final class DeploymentAdminPermission extends Permission {
     
@@ -200,7 +200,7 @@
     /**
      * Creates a new <code>DeploymentAdminPermission</code> object for the given <code>name</code> and 
      * <code>action</code>.<p>
-     * The <code>name</code> parameter identifies the target depolyment package the permission 
+     * The <code>name</code> parameter identifies the target deployment package the permission 
      * relates to. The <code>actions</code> parameter contains the comma separated list of allowed actions. 
      * 
      * @param name filter string, must not be null.
diff --git a/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/DeploymentException.java b/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/DeploymentException.java
index 4cda326..3433740 100644
--- a/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/DeploymentException.java
+++ b/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/DeploymentException.java
@@ -135,7 +135,7 @@
 	public static final int	CODE_FOREIGN_CUSTOMIZER			= 458;
 
 	/**
-	 * Bundle with the same symbolic name alerady exists.<p>
+	 * Bundle with the same symbolic name already exists.<p>
 	 * 
 	 * {@link DeploymentAdmin#installDeploymentPackage(InputStream)}
 	 * throws exception with this error code.  
diff --git a/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/DeploymentPackage.java b/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/DeploymentPackage.java
index 6b3e54f..69e5029 100644
--- a/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/DeploymentPackage.java
+++ b/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/DeploymentPackage.java
@@ -242,7 +242,7 @@
 	 * @param resource
 	 *            the name of the resource (it is the same as the value of the
 	 *            "Name" attribute in the deployment package's manifest)
-	 * @return resource processor for the resource or <code>null</cpde>.
+	 * @return resource processor for the resource or <code>null</code>.
 	 * @throws SecurityException if the caller doesn't have the appropriate {@link DeploymentAdminPermission} 
 	 *         with "metadata" action
 	 * @throws IllegalStateException if the package is stale
@@ -350,11 +350,11 @@
 	/**
 	 * Indicates whether some other object is "equal to" this one. Two
 	 * deployment packages are equal if they have the same deployment package
-	 * symbolicname and version.
+	 * symbolic name and version.
 	 * 
 	 * @param other
 	 *            the reference object with which to compare.
-	 * @return true if this object is the same as the obj argument; false
+	 * @return true if this object is the same as the <code>other<code> argument; false
 	 *         otherwise.
 	 */
 	boolean equals(Object other);
diff --git a/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/spi/DeploymentSession.java b/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/spi/DeploymentSession.java
index be2877c..646a979 100644
--- a/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/spi/DeploymentSession.java
+++ b/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/spi/DeploymentSession.java
@@ -53,7 +53,7 @@
     /**
      * If the deployment action is an update or an uninstall, this call returns
      * the <code>DeploymentPackage</code> instance for the installed deployment package. If the 
-     * deployment action is an install, this call returns the empty deploymet package (see
+     * deployment action is an install, this call returns the empty deployment package (see
      * {@link DeploymentPackage}).
      * 
      * @return the target deployment package
@@ -65,7 +65,7 @@
      * If the deployment action is an install or an update, this call returns
      * the <code>DeploymentPackage</code> instance that corresponds to the deployment package
      * being streamed in for this session. If the deployment action is an uninstall, this call 
-     * returns the empty deploymet package (see {@link DeploymentPackage}).
+     * returns the empty deployment package (see {@link DeploymentPackage}).
      * 
      * @return the source deployment package
      * @see DeploymentPackage
diff --git a/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/spi/ResourceProcessor.java b/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/spi/ResourceProcessor.java
index 9951c13..98292f3 100644
--- a/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/spi/ResourceProcessor.java
+++ b/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/spi/ResourceProcessor.java
@@ -22,7 +22,7 @@
   * ResourceProcessor interface is implemented by processors handling resource files
   * in deployment packages. Resource Processors expose their services as standard OSGi services.
   * Bundles exporting the service may arrive in the deployment package (customizers) or may be 
-  * preregistered (they are installed prevoiusly). Resource processors has to define the 
+  * preregistered (they are installed previously). Resource processors has to define the 
   * <code>service.pid</code> standard OSGi service property which should be a unique string.<p>
   * 
   * The order of the method calls on a particular Resource Processor in case of install/update 
diff --git a/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/spi/ResourceProcessorException.java b/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/spi/ResourceProcessorException.java
index f677801..3aceca7 100644
--- a/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/spi/ResourceProcessorException.java
+++ b/org.osgi.compendium/src/main/java/org/osgi/service/deploymentadmin/spi/ResourceProcessorException.java
@@ -52,7 +52,7 @@
 	 * Other error condition.<p>
 	 * 
 	 * All Resource Processor methods which throw <code>ResourceProcessorException</code> 
-	 * is allowed throw an exception with this erro code if the error condition cannot be 
+	 * is allowed throw an exception with this error code if the error condition cannot be 
 	 * categorized. 
 	 */
 	public static final int	CODE_OTHER_ERROR				= 463;
diff --git a/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitorAdmin.java b/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitorAdmin.java
index 6ab860e..7551803 100644
--- a/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitorAdmin.java
+++ b/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitorAdmin.java
@@ -57,7 +57,7 @@
  * {@link StatusVariable}. If any of the restrictions are violated, the method
  * must throw an <code>IllegalArgumentException</code>.
  * 
- * @version $Revision: 5673 $
+ * @version $Revision: 7940 $
  */
 public interface MonitorAdmin {
 
@@ -269,7 +269,7 @@
      * <p>
      * The <code>count</code> parameter defines the number of measurements to be
      * taken, and must either be a positive integer, or 0 if the measurement is
-     * to run until explicitely stopped.
+     * to run until explicitly stopped.
      * <p>
      * The entity which initiates a <code>MonitoringJob</code> needs to hold
      * <code>MonitorPermission</code> for all the specified target
@@ -284,7 +284,7 @@
      *        [Monitorable_PID]/[StatusVariable_ID] format
      * @param schedule the time in seconds between two measurements
      * @param count the number of measurements to be taken, or 0 for the
-     *        measurement to run until explicitely stopped
+     *        measurement to run until explicitly stopped
      * @return the successfully started job object, cannot be <code>null</code>
      * @throws java.lang.IllegalArgumentException if the list of
      *         <code>StatusVariable</code> names contains an invalid or 
diff --git a/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitorPermission.java b/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitorPermission.java
index c02797e..8bb2fe0 100644
--- a/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitorPermission.java
+++ b/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitorPermission.java
@@ -35,7 +35,7 @@
  * monitoring commands are allowed on the designated target(s) by the owner of
  * the permission.
  * 
- * @version $Revision: 5673 $
+ * @version $Revision: 7941 $
  */
 public class MonitorPermission extends Permission {
 
@@ -184,7 +184,7 @@
             mask = 0;
             StringTokenizer st = new StringTokenizer(actions, ",");
             while (st.hasMoreTokens()) {
-                String action = st.nextToken();
+                String action = st.nextToken().trim();
                 if (action.equalsIgnoreCase(READ)) {
                     addToMask(READ_FLAG, READ);
                 } else if (action.equalsIgnoreCase(RESET)) {
diff --git a/org.osgi.compendium/src/main/java/org/osgi/service/monitor/Monitorable.java b/org.osgi.compendium/src/main/java/org/osgi/service/monitor/Monitorable.java
index 5fceb98..c9d8760 100644
--- a/org.osgi.compendium/src/main/java/org/osgi/service/monitor/Monitorable.java
+++ b/org.osgi.compendium/src/main/java/org/osgi/service/monitor/Monitorable.java
@@ -38,11 +38,11 @@
  * <code>MonitorPermission</code> with the <code>publish</code> action string.
  * This permission, however, is not checked during registration of the
  * <code>Monitorable</code> service. Instead, the <code>MonitorAdmin</code>
- * implemenatation must make sure that when a <code>StatusVariable</code> is
+ * implementation must make sure that when a <code>StatusVariable</code> is
  * queried, it is shown only if the <code>Monitorable</code> is authorized to
  * publish the given <code>StatusVariable</code>.
  * 
- * @version $Revision: 5673 $
+ * @version $Revision: 7940 $
  */
 public interface Monitorable {
     /**
diff --git a/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitoringJob.java b/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitoringJob.java
index 43d3bf2..2ee7f9c 100644
--- a/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitoringJob.java
+++ b/org.osgi.compendium/src/main/java/org/osgi/service/monitor/MonitoringJob.java
@@ -40,7 +40,7 @@
  * specific whether we still receive updates of the <code>StatusVariable</code>
  * changes or not.
  * 
- * @version $Revision: 5673 $
+ * @version $Revision: 7940 $
  */
 public interface MonitoringJob {
     /**
@@ -50,7 +50,7 @@
     public void stop();
 
     /**
-     * Returns the identitifier of the principal who initiated the job. This is
+     * Returns the identifier of the principal who initiated the job. This is
      * set at the time when
      * {@link MonitorAdmin#startJob MonitorAdmin.startJob()} method is called.
      * This string holds the ServerID if the operation was initiated from a
@@ -79,7 +79,7 @@
      * N (greater than 0) then the <code>MonitorAdmin</code> queries each
      * <code>StatusVariable</code> that belongs to this job every N seconds.
      * The value 0 means that the job is not scheduled but event based: in this
-     * case instant notification on changes is requested (at every nth change of
+     * case instant notification on changes is requested (at every n-th change of
      * the value, as specified by the report count parameter).
      * 
      * @return the delay (in seconds) between samples, or 0 for change based
@@ -115,7 +115,7 @@
     
     /**
      * Returns whether the job is running.   A job is running until it is
-     * explicitely stopped, or, in case of time based jobs with a finite report
+     * explicitly stopped, or, in case of time based jobs with a finite report
      * count, until the given number of measurements have been made.
      *   
      * @return <code>true</code> if the job is still running, <code>false</code>
diff --git a/org.osgi.compendium/src/main/resources/xmlns/blueprint/v1.0.0/blueprint.xsd b/org.osgi.compendium/src/main/resources/xmlns/blueprint/v1.0.0/blueprint.xsd
index c78cf21..bb90506 100644
--- a/org.osgi.compendium/src/main/resources/xmlns/blueprint/v1.0.0/blueprint.xsd
+++ b/org.osgi.compendium/src/main/resources/xmlns/blueprint/v1.0.0/blueprint.xsd
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!--
     /*
-    * $Revision: 7774 $
+    * $Revision: 7773 $
     *
     * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
     *
diff --git a/org.osgi.core/src/main/resources/about.html b/org.osgi.core/src/main/resources/about.html
index 7f21fe1..694d69a 100644
--- a/org.osgi.core/src/main/resources/about.html
+++ b/org.osgi.core/src/main/resources/about.html
@@ -1,5 +1,4 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<!-- $Header: /cvshome/build/osgi/about.html,v 1.4 2006/10/30 18:29:29 hargrave Exp $ -->
 <html>
 <head>
 <title>About</title>
@@ -9,14 +8,13 @@
 <h2>About This Content</h2>
  
 <h3>Copyright</h3>
-<p>Copyright (c) 2000, 2005</p>
+<p>Copyright &copy; OSGi Alliance (2000, 2009). All Rights Reserved.</p>
 
 <p>OSGi Alliance<br/>
 Bishop Ranch 6<br/>
 2400 Camino Ramon, Suite 375<br/>
 San Ramon, CA 94583 USA
 </p>
-<p>All Rights Reserved.</p>
 
 <h3>License</h3>
 <p>The OSGi Alliance makes available all content in this jar (&quot;Work&quot;).  Unless otherwise indicated below, the Work is provided to you under the terms and conditions of the
@@ -37,4 +35,4 @@
 owners and are hereby recognized.</p>
 
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/org.osgi.core/src/main/resources/package.html b/org.osgi.core/src/main/resources/package.html
deleted file mode 100644
index 4ed4d6e..0000000
--- a/org.osgi.core/src/main/resources/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<!-- $Revision: 6204 $ -->
-<BODY>
-<p>URL Stream and Content Handlers Package Version 1.0.
-<p>Bundles wishing to use this package must list the package
-in the Import-Package header of the bundle's manifest.
-For example:
-<pre>
-Import-Package: org.osgi.service.url; version=&quot;[1.0,2.0)&quot;
-</pre>
-</BODY>
diff --git a/org.osgi.core/src/main/resources/packageinfo b/org.osgi.core/src/main/resources/packageinfo
deleted file mode 100644
index 7c8de03..0000000
--- a/org.osgi.core/src/main/resources/packageinfo
+++ /dev/null
@@ -1 +0,0 @@
-version 1.0
