diff --git a/src/main/java/org/apache/sling/launchpad/testservices/exported/TestEnum.java b/src/main/java/org/apache/sling/launchpad/testservices/exported/TestEnum.java
index 9ef9c30..0dabd85 100644
--- a/src/main/java/org/apache/sling/launchpad/testservices/exported/TestEnum.java
+++ b/src/main/java/org/apache/sling/launchpad/testservices/exported/TestEnum.java
@@ -1,9 +1,25 @@
+/*
+ * 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.
+ */
 package org.apache.sling.launchpad.testservices.exported;
 
 public enum TestEnum {
     FOO,
     BAR;
-    
+
     public static TestEnum parse(String str) {
         if(str.contains("foo")) {
             return FOO;
diff --git a/src/main/java/org/apache/sling/launchpad/testservices/filters/HttpServiceExtFilter.java b/src/main/java/org/apache/sling/launchpad/testservices/filters/HttpServiceExtFilter.java
index 2ff25ce..1f2a12f 100644
--- a/src/main/java/org/apache/sling/launchpad/testservices/filters/HttpServiceExtFilter.java
+++ b/src/main/java/org/apache/sling/launchpad/testservices/filters/HttpServiceExtFilter.java
@@ -1,5 +1,3 @@
-package org.apache.sling.launchpad.testservices.filters;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -16,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.sling.launchpad.testservices.filters;
 
 /** Example/test Filter.
  *
diff --git a/src/main/java/org/apache/sling/launchpad/testservices/filters/NoPropertyFilter.java b/src/main/java/org/apache/sling/launchpad/testservices/filters/NoPropertyFilter.java
index 68cf42b..e07e003 100644
--- a/src/main/java/org/apache/sling/launchpad/testservices/filters/NoPropertyFilter.java
+++ b/src/main/java/org/apache/sling/launchpad/testservices/filters/NoPropertyFilter.java
@@ -1,5 +1,3 @@
-package org.apache.sling.launchpad.testservices.filters;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -16,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.sling.launchpad.testservices.filters;
 
 /** Example/test Sling Servlet registered with two extensions
  *
@@ -25,6 +24,8 @@
  * @scr.property name="service.description" value="Test Filter"
  * @scr.property name="service.vendor" value="The Apache Software Foundation"
  *
+ * @scr.property name="sling.filter.scope" value="request"
+ *
  * Register this filter with the no pattern registration properties
  */
 public class NoPropertyFilter extends TestFilter {
diff --git a/src/main/java/org/apache/sling/launchpad/testservices/filters/SlingFilter.java b/src/main/java/org/apache/sling/launchpad/testservices/filters/SlingFilter.java
index 9b5dbab..aa30b5c 100644
--- a/src/main/java/org/apache/sling/launchpad/testservices/filters/SlingFilter.java
+++ b/src/main/java/org/apache/sling/launchpad/testservices/filters/SlingFilter.java
@@ -1,5 +1,3 @@
-package org.apache.sling.launchpad.testservices.filters;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -16,11 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.sling.launchpad.testservices.filters;
 
 /** Example/test Sling Servlet registered with two extensions
  *
  * @scr.component immediate="true" metatype="no"
  * @scr.service interface="javax.servlet.Filter"
+ * @scr.property name="sling.filter.scope" value="request"
  *
  * @scr.property name="service.description" value="Test Filter"
  * @scr.property name="service.vendor" value="The Apache Software Foundation"
diff --git a/src/main/java/org/apache/sling/launchpad/testservices/filters/TestFilter.java b/src/main/java/org/apache/sling/launchpad/testservices/filters/TestFilter.java
index c1c00f3..75a0c29 100644
--- a/src/main/java/org/apache/sling/launchpad/testservices/filters/TestFilter.java
+++ b/src/main/java/org/apache/sling/launchpad/testservices/filters/TestFilter.java
@@ -1,16 +1,3 @@
-package org.apache.sling.launchpad.testservices.filters;
-
-import java.io.IOException;
-import java.util.concurrent.atomic.AtomicInteger;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -27,15 +14,27 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.sling.launchpad.testservices.filters;
+
+import java.io.IOException;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 /**
  * Example/test Filter.
  */
 abstract class TestFilter implements Filter {
-    
-    private FilterConfig filterConfig;
-    
+
     public void init(FilterConfig filterConfig) throws ServletException {
-        this.filterConfig = filterConfig;
+        // nothing to do
     }
 
     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
diff --git a/src/main/java/org/apache/sling/launchpad/testservices/scripting/GroovyBindingsValuesProvider.java b/src/main/java/org/apache/sling/launchpad/testservices/scripting/GroovyBindingsValuesProvider.java
index 6f3515e..1168339 100644
--- a/src/main/java/org/apache/sling/launchpad/testservices/scripting/GroovyBindingsValuesProvider.java
+++ b/src/main/java/org/apache/sling/launchpad/testservices/scripting/GroovyBindingsValuesProvider.java
@@ -1,5 +1,3 @@
-package org.apache.sling.launchpad.testservices.scripting;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -16,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.sling.launchpad.testservices.scripting;
 
 import javax.script.Bindings;
 
diff --git a/src/main/java/org/apache/sling/launchpad/testservices/scripting/JSPBindingsValuesProvider.java b/src/main/java/org/apache/sling/launchpad/testservices/scripting/JSPBindingsValuesProvider.java
index d58e7e1..0d30f23 100644
--- a/src/main/java/org/apache/sling/launchpad/testservices/scripting/JSPBindingsValuesProvider.java
+++ b/src/main/java/org/apache/sling/launchpad/testservices/scripting/JSPBindingsValuesProvider.java
@@ -1,5 +1,3 @@
-package org.apache.sling.launchpad.testservices.scripting;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -16,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.sling.launchpad.testservices.scripting;
 
 import javax.script.Bindings;
 
diff --git a/src/main/java/org/apache/sling/launchpad/testservices/scripting/StringBindingsValuesProvider.java b/src/main/java/org/apache/sling/launchpad/testservices/scripting/StringBindingsValuesProvider.java
index 19c075f..4b160d2 100644
--- a/src/main/java/org/apache/sling/launchpad/testservices/scripting/StringBindingsValuesProvider.java
+++ b/src/main/java/org/apache/sling/launchpad/testservices/scripting/StringBindingsValuesProvider.java
@@ -1,5 +1,3 @@
-package org.apache.sling.launchpad.testservices.scripting;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -16,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.sling.launchpad.testservices.scripting;
 
 import javax.script.Bindings;
 
diff --git a/src/main/java/org/apache/sling/launchpad/testservices/servlets/ExtensionServlet.java b/src/main/java/org/apache/sling/launchpad/testservices/servlets/ExtensionServlet.java
index 3f35cc1..4f640e7 100644
--- a/src/main/java/org/apache/sling/launchpad/testservices/servlets/ExtensionServlet.java
+++ b/src/main/java/org/apache/sling/launchpad/testservices/servlets/ExtensionServlet.java
@@ -1,5 +1,3 @@
-package org.apache.sling.launchpad.testservices.servlets;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -16,24 +14,25 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.sling.launchpad.testservices.servlets;
 
 /** Example/test Sling Servlet registered with two extensions
- * 
+ *
  * @scr.component immediate="true" metatype="no"
  * @scr.service interface="javax.servlet.Servlet"
- * 
+ *
  * @scr.property name="service.description" value="Default Query Servlet"
  * @scr.property name="service.vendor" value="The Apache Software Foundation"
- * 
+ *
  * Register this servlet for the default resource type and two selectors:
  * @scr.property name="sling.servlet.resourceTypes"
  *               value="sling/servlet/default"
- *               
+ *
  * @scr.property name="sling.servlet.extensions"
  *               values.1 = "TEST_EXT_1"
- *               values.2 = "TEST_EXT_2" 
+ *               values.2 = "TEST_EXT_2"
  */
 
 @SuppressWarnings("serial")
-public class ExtensionServlet extends TestServlet {  
+public class ExtensionServlet extends TestServlet {
 }
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/launchpad/testservices/servlets/HtmlDefaultServlet.java b/src/main/java/org/apache/sling/launchpad/testservices/servlets/HtmlDefaultServlet.java
index 69b1cf4..1ee9b90 100644
--- a/src/main/java/org/apache/sling/launchpad/testservices/servlets/HtmlDefaultServlet.java
+++ b/src/main/java/org/apache/sling/launchpad/testservices/servlets/HtmlDefaultServlet.java
@@ -14,7 +14,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.sling.launchpad.testservices.servlets;
 
 /**
diff --git a/src/main/java/org/apache/sling/launchpad/testservices/servlets/PrefixServletMinusOne.java b/src/main/java/org/apache/sling/launchpad/testservices/servlets/PrefixServletMinusOne.java
index bb23693..a7f1eb4 100644
--- a/src/main/java/org/apache/sling/launchpad/testservices/servlets/PrefixServletMinusOne.java
+++ b/src/main/java/org/apache/sling/launchpad/testservices/servlets/PrefixServletMinusOne.java
@@ -1,5 +1,3 @@
-package org.apache.sling.launchpad.testservices.servlets;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -16,16 +14,17 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.sling.launchpad.testservices.servlets;
 
 /** Example/test Sling Servlet using a prefix to demonstrate how
  *  PrefixServletZero overrides PrefixServletMinusOne
- * 
+ *
  * @scr.component immediate="true" metatype="no"
  * @scr.service interface="javax.servlet.Servlet"
- * 
+ *
  * @scr.property name="service.description" value="Default Query Servlet"
  * @scr.property name="service.vendor" value="The Apache Software Foundation"
- * 
+ *
  * @scr.property name="sling.servlet.prefix"
  *               value="-1"
  * @scr.property name="sling.servlet.resourceTypes"
@@ -36,5 +35,5 @@
  */
 
 @SuppressWarnings("serial")
-public class PrefixServletMinusOne extends TestServlet {  
+public class PrefixServletMinusOne extends TestServlet {
 }
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/launchpad/testservices/servlets/PrefixServletZero.java b/src/main/java/org/apache/sling/launchpad/testservices/servlets/PrefixServletZero.java
index 225fc66..f21ea9b 100644
--- a/src/main/java/org/apache/sling/launchpad/testservices/servlets/PrefixServletZero.java
+++ b/src/main/java/org/apache/sling/launchpad/testservices/servlets/PrefixServletZero.java
@@ -1,5 +1,3 @@
-package org.apache.sling.launchpad.testservices.servlets;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -16,16 +14,17 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.sling.launchpad.testservices.servlets;
 
 /** Example/test Sling Servlet using a prefix to demonstrate how
  *  PrefixServletZero overrides PrefixServletMinusOne
- * 
+ *
  * @scr.component immediate="true" metatype="no"
  * @scr.service interface="javax.servlet.Servlet"
- * 
+ *
  * @scr.property name="service.description" value="Default Query Servlet"
  * @scr.property name="service.vendor" value="The Apache Software Foundation"
- * 
+ *
  * @scr.property name="sling.servlet.prefix"
  *               value="0"
  * @scr.property name="sling.servlet.resourceTypes"
@@ -36,5 +35,5 @@
  */
 
 @SuppressWarnings("serial")
-public class PrefixServletZero extends TestServlet {  
+public class PrefixServletZero extends TestServlet {
 }
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/launchpad/testservices/servlets/PutMethodServlet.java b/src/main/java/org/apache/sling/launchpad/testservices/servlets/PutMethodServlet.java
index 9c7b3f1..05e7680 100644
--- a/src/main/java/org/apache/sling/launchpad/testservices/servlets/PutMethodServlet.java
+++ b/src/main/java/org/apache/sling/launchpad/testservices/servlets/PutMethodServlet.java
@@ -1,12 +1,3 @@
-package org.apache.sling.launchpad.testservices.servlets;
-
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-
-import org.apache.sling.api.SlingHttpServletRequest;
-import org.apache.sling.api.SlingHttpServletResponse;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -23,19 +14,27 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.sling.launchpad.testservices.servlets;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.SlingHttpServletResponse;
 
 /** Example/test Sling Servlet registered for the PUT method
  *  on a specific resource type
- * 
+ *
  * @scr.component immediate="true" metatype="no"
  * @scr.service interface="javax.servlet.Servlet"
- * 
+ *
  * @scr.property name="service.description" value="Default Query Servlet"
  * @scr.property name="service.vendor" value="The Apache Software Foundation"
- * 
+ *
  * @scr.property name="sling.servlet.resourceTypes"
  *               value="LAUNCHPAD_TEST_ResourceType"
- *               
+ *
  * @scr.property name="sling.servlet.methods"
  *               value = "PUT"
 */
@@ -44,7 +43,7 @@
 public class PutMethodServlet extends TestServlet {
 
   @Override
-  protected void doPut(SlingHttpServletRequest request, SlingHttpServletResponse response) 
+  protected void doPut(SlingHttpServletRequest request, SlingHttpServletResponse response)
   throws ServletException, IOException {
     dumpRequestAsProperties(request, response);
   }
diff --git a/src/main/java/org/apache/sling/launchpad/testservices/servlets/SelectorServlet.java b/src/main/java/org/apache/sling/launchpad/testservices/servlets/SelectorServlet.java
index 0a51259..1842dfe 100644
--- a/src/main/java/org/apache/sling/launchpad/testservices/servlets/SelectorServlet.java
+++ b/src/main/java/org/apache/sling/launchpad/testservices/servlets/SelectorServlet.java
@@ -1,5 +1,3 @@
-package org.apache.sling.launchpad.testservices.servlets;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -16,27 +14,28 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.sling.launchpad.testservices.servlets;
 
 /** Example/test Sling Servlet registered with two selectors
- * 
+ *
  * @scr.component immediate="true" metatype="no"
  * @scr.service interface="javax.servlet.Servlet"
- * 
+ *
  * @scr.property name="service.description" value="Default Query Servlet"
  * @scr.property name="service.vendor" value="The Apache Software Foundation"
- * 
+ *
  * Register this servlet for the default resource type and two selectors:
  * @scr.property name="sling.servlet.resourceTypes"
  *               value="sling/servlet/default"
- *               
+ *
  * @scr.property name="sling.servlet.selectors"
  *               values.1 = "TEST_SEL_1"
  *               values.2 = "TEST_SEL_2"
- *                
+ *
  * @scr.property name="sling.servlet.extensions"
  *               value = "txt"
 */
 
 @SuppressWarnings("serial")
-public class SelectorServlet extends TestServlet {  
+public class SelectorServlet extends TestServlet {
 }
\ No newline at end of file
