diff --git a/pom.xml b/pom.xml
index 092484f..808e75a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,7 @@
     </parent>    
     
     <artifactId>org.apache.sling.dynamic-include</artifactId>
-    <version>3.2.1-SNAPSHOT</version>
+    <version>3.3.0-SNAPSHOT</version>
     
     <name>Apache Sling Dynamic Include</name>
     <description>Dynamic Include filter for Apache Sling</description>
@@ -71,6 +71,10 @@
             <artifactId>org.osgi.service.component.annotations</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.annotation.versioning</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.servlets.annotations</artifactId>
             <scope>provided</scope>
diff --git a/src/main/java/org/apache/sling/dynamicinclude/Configuration.java b/src/main/java/org/apache/sling/dynamicinclude/Configuration.java
index 0fa523a..717209c 100755
--- a/src/main/java/org/apache/sling/dynamicinclude/Configuration.java
+++ b/src/main/java/org/apache/sling/dynamicinclude/Configuration.java
@@ -36,9 +36,9 @@
 import org.osgi.service.component.annotations.Component;
 import org.osgi.service.component.annotations.ConfigurationPolicy;
 import org.osgi.service.metatype.annotations.AttributeDefinition;
+import org.osgi.service.metatype.annotations.AttributeType;
 import org.osgi.service.metatype.annotations.Designate;
 import org.osgi.service.metatype.annotations.ObjectClassDefinition;
-import org.osgi.service.metatype.annotations.Option;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -63,20 +63,18 @@
       @AttributeDefinition(name="Base path regular expression", description="This SDI configuration will work only for paths matching this value. If value starts with \\\"^\\\" sign, regex matching will be performed. Otherwise it will check for path prefix.")
       String include$_$filter_config_path() default "/content";
       
-      @AttributeDefinition(name="Resource types", description="Filter will replace components with selected resource types", cardinality = Integer.MAX_VALUE)
-      String include$_$filter_config_resource$_$types() default "";
+      @AttributeDefinition(name = "Resource types",
+          description = "Filter will replace components with selected resource types",
+          type = AttributeType.STRING)
+      String[] include$_$filter_config_resource$_$types() default {};
       
-      @AttributeDefinition(name = "Include type", description = "Type of generated include tags", options = {
-          @Option(label = "Apache SSI", value = "SSI"),
-          @Option(label = "ESI", value = "ESI"),
-          @Option(label = "Javascript", value = "JSI")
-      })
+      @AttributeDefinition(name = "Include type", description = "Type of generated include tags")
       String include$_$filter_config_include$_$type() default "SSI";
       
       @AttributeDefinition(name="Add comment", description = "Add comment to included components")
       boolean include$_$filter_config_add__comment() default false;
       
-      @AttributeDefinition(name = "Filter selector", description = "Selector used to mark included resources")
+      @AttributeDefinition(name = "Filter selector", description = "Selector used to mark included resources. The Built in option are 'SSI','ESI' and 'JSI'")
       String include$_$filter_config_selector() default "nocache";
 
       @AttributeDefinition(name = "Extension", description = "Extension to append to virtual resources to make caching possible")
@@ -88,8 +86,10 @@
       @AttributeDefinition(name = "Required header", description = "SDI will work only for requests with given header")
       String include$_$filter_config_required__header() default "Server-Agent=Communique-Dispatcher";
 
-      @AttributeDefinition(name = "Ignore URL params", description = "SDI will process the request even if it contains configured GET parameters", cardinality = Integer.MAX_VALUE)
-      String include$_$filter_config_ignoreUrlParams() default "";
+      @AttributeDefinition(name = "Ignore URL params",
+          description = "SDI will process the request even if it contains configured GET parameters",
+          type = AttributeType.STRING)
+      String[] include$_$filter_config_ignoreUrlParams() default {};
 
       @AttributeDefinition(name =  "Include path rewriting", description = "Check to enable include path rewriting")
       boolean include$_$filter_config_rewrite() default false;
diff --git a/src/main/java/org/apache/sling/dynamicinclude/IncludeTagFilter.java b/src/main/java/org/apache/sling/dynamicinclude/IncludeTagFilter.java
index b43568a..7bdddd3 100644
--- a/src/main/java/org/apache/sling/dynamicinclude/IncludeTagFilter.java
+++ b/src/main/java/org/apache/sling/dynamicinclude/IncludeTagFilter.java
@@ -25,7 +25,6 @@
 import java.net.URISyntaxException;
 import java.util.Collection;
 import java.util.Enumeration;
-import java.util.List;
 
 import javax.servlet.Filter;
 import javax.servlet.FilterChain;
@@ -39,7 +38,7 @@
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceUtil;
-import org.apache.sling.dynamicinclude.generator.IncludeGenerator;
+import org.apache.sling.dynamicinclude.api.IncludeGenerator;
 import org.apache.sling.dynamicinclude.generator.IncludeGeneratorWhiteboard;
 import org.apache.sling.dynamicinclude.impl.UrlBuilder;
 import org.apache.sling.servlets.annotations.SlingServletFilter;
@@ -97,7 +96,7 @@
         // Only write the includes markup if the required, configurable request
         // header is present
         if (shouldWriteIncludes(config, slingRequest)) {
-            String include = generator.getInclude(url);
+            String include = generator.getInclude(slingRequest,url);
             LOG.debug(include);
             writer.append(include);
         } else {
diff --git a/src/main/java/org/apache/sling/dynamicinclude/api/IncludeGenerator.java b/src/main/java/org/apache/sling/dynamicinclude/api/IncludeGenerator.java
new file mode 100755
index 0000000..e950ddc
--- /dev/null
+++ b/src/main/java/org/apache/sling/dynamicinclude/api/IncludeGenerator.java
@@ -0,0 +1,47 @@
+/*-
+ * 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.dynamicinclude.api;
+
+import org.apache.sling.api.SlingHttpServletRequest;
+
+/**
+ * Include generator interface
+ */
+public interface IncludeGenerator {
+    String getType();
+
+    /**
+     * Returns the string used to include the resource.
+     * For example, this might be a Javascript code that retrieves a snippet of html,
+     * an Apache SSI Tag, or an Edge Side Include Tag.
+     * <p>
+     * This method receives the sling request and an Url that has already be normalized as followed:
+     * <ul>
+     * <li>The query string has been removed</li>
+     * <li>The Url has been mapped using the ResourceResolver</li>
+     * <li>The jcr:content paths have been encoded to _jcr_content.</li>
+     * </ul>
+     *
+     * @param request       the Sling request object
+     * @param normalizedUrl the requested url, normalized
+     * @return a String used to include the resource
+     **/
+    String getInclude(SlingHttpServletRequest request, String normalizedUrl);
+}
diff --git a/src/main/java/org/apache/sling/dynamicinclude/generator/IncludeGenerator.java b/src/main/java/org/apache/sling/dynamicinclude/api/package-info.java
old mode 100755
new mode 100644
similarity index 80%
rename from src/main/java/org/apache/sling/dynamicinclude/generator/IncludeGenerator.java
rename to src/main/java/org/apache/sling/dynamicinclude/api/package-info.java
index 91998aa..07f09e3
--- a/src/main/java/org/apache/sling/dynamicinclude/generator/IncludeGenerator.java
+++ b/src/main/java/org/apache/sling/dynamicinclude/api/package-info.java
@@ -17,13 +17,7 @@
  * under the License.
  */
 
-package org.apache.sling.dynamicinclude.generator;
+@Version("1.0.0")
+package org.apache.sling.dynamicinclude.api;
 
-/**
- * Include generator interface
- */
-public interface IncludeGenerator {
-    String getType();
-
-    String getInclude(String url);
-}
+import org.osgi.annotation.versioning.Version;
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/dynamicinclude/generator/IncludeGeneratorWhiteboard.java b/src/main/java/org/apache/sling/dynamicinclude/generator/IncludeGeneratorWhiteboard.java
index 8294744..5f742c7 100755
--- a/src/main/java/org/apache/sling/dynamicinclude/generator/IncludeGeneratorWhiteboard.java
+++ b/src/main/java/org/apache/sling/dynamicinclude/generator/IncludeGeneratorWhiteboard.java
@@ -26,6 +26,7 @@
 import java.util.Set;
 import java.util.concurrent.CopyOnWriteArraySet;
 
+import org.apache.sling.dynamicinclude.api.IncludeGenerator;
 import org.osgi.service.component.annotations.Component;
 import org.osgi.service.component.annotations.Reference;
 
diff --git a/src/main/java/org/apache/sling/dynamicinclude/generator/types/EsiGenerator.java b/src/main/java/org/apache/sling/dynamicinclude/generator/types/EsiGenerator.java
index 0d47fcd..b648800 100755
--- a/src/main/java/org/apache/sling/dynamicinclude/generator/types/EsiGenerator.java
+++ b/src/main/java/org/apache/sling/dynamicinclude/generator/types/EsiGenerator.java
@@ -20,7 +20,8 @@
 package org.apache.sling.dynamicinclude.generator.types;
 
 import org.apache.commons.lang3.StringEscapeUtils;
-import org.apache.sling.dynamicinclude.generator.IncludeGenerator;
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.dynamicinclude.api.IncludeGenerator;
 import org.osgi.service.component.annotations.Component;
 
 /**
@@ -36,7 +37,7 @@
     }
 
     @Override
-    public String getInclude(String url) {
+    public String getInclude(SlingHttpServletRequest request, String url) {
         StringBuffer buf = new StringBuffer();
         buf.append("<esi:include src=\"");
         buf.append(StringEscapeUtils.escapeHtml4(url));
diff --git a/src/main/java/org/apache/sling/dynamicinclude/generator/types/JsiGenerator.java b/src/main/java/org/apache/sling/dynamicinclude/generator/types/JsiGenerator.java
index a777f42..f3d36a8 100755
--- a/src/main/java/org/apache/sling/dynamicinclude/generator/types/JsiGenerator.java
+++ b/src/main/java/org/apache/sling/dynamicinclude/generator/types/JsiGenerator.java
@@ -27,7 +27,8 @@
 import java.net.URL;
 
 import org.apache.commons.lang3.StringEscapeUtils;
-import org.apache.sling.dynamicinclude.generator.IncludeGenerator;
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.dynamicinclude.api.IncludeGenerator;
 import org.osgi.service.component.ComponentContext;
 import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
@@ -69,7 +70,7 @@
     }
 
     @Override
-    public String getInclude(String url) {
+    public String getInclude(SlingHttpServletRequest request, String url) {
         if (template == null) {
             throw new IllegalStateException("JSI generator hasn't be initialized");
         }
diff --git a/src/main/java/org/apache/sling/dynamicinclude/generator/types/SsiGenerator.java b/src/main/java/org/apache/sling/dynamicinclude/generator/types/SsiGenerator.java
index 718d506..1cbee83 100755
--- a/src/main/java/org/apache/sling/dynamicinclude/generator/types/SsiGenerator.java
+++ b/src/main/java/org/apache/sling/dynamicinclude/generator/types/SsiGenerator.java
@@ -19,7 +19,8 @@
 
 package org.apache.sling.dynamicinclude.generator.types;
 
-import org.apache.sling.dynamicinclude.generator.IncludeGenerator;
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.dynamicinclude.api.IncludeGenerator;
 import org.osgi.service.component.annotations.Component;
 
 /**
@@ -35,7 +36,7 @@
     }
 
     @Override
-    public String getInclude(String url) {
+    public String getInclude(SlingHttpServletRequest request, String url) {
         StringBuffer buf = new StringBuffer();
         buf.append("<!--#include virtual=\"");
         buf.append(escapeForApache(url));
diff --git a/src/test/java/org/apache/sling/dynamicinclude/ConfigurationTest.java b/src/test/java/org/apache/sling/dynamicinclude/ConfigurationTest.java
index 85cdf8a..ee9c29d 100644
--- a/src/test/java/org/apache/sling/dynamicinclude/ConfigurationTest.java
+++ b/src/test/java/org/apache/sling/dynamicinclude/ConfigurationTest.java
@@ -74,17 +74,18 @@
     properties.put("include-filter.config.add_comment", true);
     properties.put("include-filter.config.ttl", 60);
     properties.put("include-filter.config.enabled", true);
-    properties.put("include-filter.config.resource-types", new String[]{"test/resource/type"});
+    properties.put("include-filter.config.resource-types",
+        new String[] { "test/resource/type", "test/resource/type2" });
     properties.put("include-filter.config.required_header", "CustomHeader: value");
     properties.put("include-filter.config.selector", "cache");
     properties.put("include-filter.config.rewrite", true);
-    properties.put("include-filter.config.ignoreUrlParams", new String[] {"query"});
+    properties.put("include-filter.config.ignoreUrlParams", new String[] { "query", "query2" });
 
     context.registerInjectActivateService(tested, properties);
 
     assertThat(tested.getPathMatcher().getClass().isAssignableFrom(PrefixPathMatcher.class), is(true));
     assertThat(tested.getAddComment(), is(true));
-    assertThat(tested.getIgnoreUrlParams().size(), is(1));
+    assertThat(tested.getIgnoreUrlParams().size(), is(2));
     assertThat(tested.getIncludeSelector(), is("cache"));
     assertThat(tested.getIncludeTypeName(), is("ESI"));
     assertThat(tested.getRequiredHeader(), is("CustomHeader: value"));
@@ -93,5 +94,6 @@
     assertThat(tested.hasTtlSet(), is(true));
     assertThat(tested.isRewritePath(), is(true));
     assertThat(tested.isSupportedResourceType("test/resource/type"), is(true));
+    assertThat(tested.isSupportedResourceType("test/resource/type2"), is(true));
   }
 }
