diff --git a/apps/showcase/pom.xml b/apps/showcase/pom.xml
index 8db25884a..360e1191f 100644
--- a/apps/showcase/pom.xml
+++ b/apps/showcase/pom.xml
@@ -30,6 +30,12 @@
${pom.version}
+
+ org.apache.struts
+ struts2-jsf-plugin
+ ${pom.version}
+
+
javax.servlet
diff --git a/apps/showcase/src/main/resources/struts-jsf.xml b/apps/showcase/src/main/resources/struts-jsf.xml
index 453551f50..595825f3c 100644
--- a/apps/showcase/src/main/resources/struts-jsf.xml
+++ b/apps/showcase/src/main/resources/struts-jsf.xml
@@ -4,7 +4,7 @@
-
+
diff --git a/core/src/main/resources/struts-default.xml b/core/src/main/resources/struts-default.xml
index c3a1b863e..9ab9b138b 100644
--- a/core/src/main/resources/struts-default.xml
+++ b/core/src/main/resources/struts-default.xml
@@ -18,10 +18,6 @@
-
-
@@ -53,14 +49,6 @@
-
-
-
-
-
-
-
-
@@ -189,19 +177,7 @@
-
-
-
- org.apache.struts2.jsf.StrutsVariableResolver
- org.apache.struts2.jsf.StrutsNavigationHandler
-
-
-
-
-
-
-
-
+
diff --git a/plugins/jsf/pom.xml b/plugins/jsf/pom.xml
new file mode 100644
index 000000000..bfa79c1ac
--- /dev/null
+++ b/plugins/jsf/pom.xml
@@ -0,0 +1,44 @@
+
+
+ 4.0.0
+
+ org.apache.struts
+ struts2-plugins
+ 2.0.1-SNAPSHOT
+
+ org.apache.struts
+ struts2-jsf-plugin
+ jar
+ Struts 2 JSF Plugin
+
+
+
+ apache-site
+ scp://people.apache.org/www/struts.apache.org/2.x/plugins/jsf
+
+
+
+
+
+ org.apache.struts
+ struts-core
+ 1.3.5
+
+
+
+ myfaces
+ myfaces-jsf-api
+ 1.0.9
+ provided
+
+
+
+
+ mockobjects
+ mockobjects-core
+ 0.09
+ test
+
+
+
diff --git a/core/src/main/java/org/apache/struts2/jsf/ApplyRequestValuesInterceptor.java b/plugins/jsf/src/main/java/org/apache/struts2/jsf/ApplyRequestValuesInterceptor.java
similarity index 100%
rename from core/src/main/java/org/apache/struts2/jsf/ApplyRequestValuesInterceptor.java
rename to plugins/jsf/src/main/java/org/apache/struts2/jsf/ApplyRequestValuesInterceptor.java
diff --git a/core/src/main/java/org/apache/struts2/jsf/FacesInterceptor.java b/plugins/jsf/src/main/java/org/apache/struts2/jsf/FacesInterceptor.java
similarity index 100%
rename from core/src/main/java/org/apache/struts2/jsf/FacesInterceptor.java
rename to plugins/jsf/src/main/java/org/apache/struts2/jsf/FacesInterceptor.java
diff --git a/core/src/main/java/org/apache/struts2/jsf/FacesRender.java b/plugins/jsf/src/main/java/org/apache/struts2/jsf/FacesRender.java
similarity index 100%
rename from core/src/main/java/org/apache/struts2/jsf/FacesRender.java
rename to plugins/jsf/src/main/java/org/apache/struts2/jsf/FacesRender.java
diff --git a/core/src/main/java/org/apache/struts2/jsf/FacesResult.java b/plugins/jsf/src/main/java/org/apache/struts2/jsf/FacesResult.java
similarity index 100%
rename from core/src/main/java/org/apache/struts2/jsf/FacesResult.java
rename to plugins/jsf/src/main/java/org/apache/struts2/jsf/FacesResult.java
diff --git a/core/src/main/java/org/apache/struts2/jsf/FacesSetupInterceptor.java b/plugins/jsf/src/main/java/org/apache/struts2/jsf/FacesSetupInterceptor.java
similarity index 100%
rename from core/src/main/java/org/apache/struts2/jsf/FacesSetupInterceptor.java
rename to plugins/jsf/src/main/java/org/apache/struts2/jsf/FacesSetupInterceptor.java
diff --git a/core/src/main/java/org/apache/struts2/jsf/FacesSupport.java b/plugins/jsf/src/main/java/org/apache/struts2/jsf/FacesSupport.java
similarity index 100%
rename from core/src/main/java/org/apache/struts2/jsf/FacesSupport.java
rename to plugins/jsf/src/main/java/org/apache/struts2/jsf/FacesSupport.java
diff --git a/core/src/main/java/org/apache/struts2/jsf/InvokeApplicationInterceptor.java b/plugins/jsf/src/main/java/org/apache/struts2/jsf/InvokeApplicationInterceptor.java
similarity index 100%
rename from core/src/main/java/org/apache/struts2/jsf/InvokeApplicationInterceptor.java
rename to plugins/jsf/src/main/java/org/apache/struts2/jsf/InvokeApplicationInterceptor.java
diff --git a/core/src/main/java/org/apache/struts2/jsf/ProcessValidationsInterceptor.java b/plugins/jsf/src/main/java/org/apache/struts2/jsf/ProcessValidationsInterceptor.java
similarity index 100%
rename from core/src/main/java/org/apache/struts2/jsf/ProcessValidationsInterceptor.java
rename to plugins/jsf/src/main/java/org/apache/struts2/jsf/ProcessValidationsInterceptor.java
diff --git a/core/src/main/java/org/apache/struts2/jsf/RestoreViewInterceptor.java b/plugins/jsf/src/main/java/org/apache/struts2/jsf/RestoreViewInterceptor.java
similarity index 100%
rename from core/src/main/java/org/apache/struts2/jsf/RestoreViewInterceptor.java
rename to plugins/jsf/src/main/java/org/apache/struts2/jsf/RestoreViewInterceptor.java
diff --git a/core/src/main/java/org/apache/struts2/jsf/StrutsNavigationHandler.java b/plugins/jsf/src/main/java/org/apache/struts2/jsf/StrutsNavigationHandler.java
similarity index 100%
rename from core/src/main/java/org/apache/struts2/jsf/StrutsNavigationHandler.java
rename to plugins/jsf/src/main/java/org/apache/struts2/jsf/StrutsNavigationHandler.java
diff --git a/core/src/main/java/org/apache/struts2/jsf/StrutsVariableResolver.java b/plugins/jsf/src/main/java/org/apache/struts2/jsf/StrutsVariableResolver.java
similarity index 100%
rename from core/src/main/java/org/apache/struts2/jsf/StrutsVariableResolver.java
rename to plugins/jsf/src/main/java/org/apache/struts2/jsf/StrutsVariableResolver.java
diff --git a/core/src/main/java/org/apache/struts2/jsf/UpdateModelValuesInterceptor.java b/plugins/jsf/src/main/java/org/apache/struts2/jsf/UpdateModelValuesInterceptor.java
similarity index 100%
rename from core/src/main/java/org/apache/struts2/jsf/UpdateModelValuesInterceptor.java
rename to plugins/jsf/src/main/java/org/apache/struts2/jsf/UpdateModelValuesInterceptor.java
diff --git a/plugins/jsf/src/main/resources/struts-plugin.xml b/plugins/jsf/src/main/resources/struts-plugin.xml
new file mode 100644
index 000000000..df5a8a169
--- /dev/null
+++ b/plugins/jsf/src/main/resources/struts-plugin.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ org.apache.struts2.jsf.StrutsVariableResolver
+ org.apache.struts2.jsf.StrutsNavigationHandler
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/pom.xml b/plugins/pom.xml
index 43893a1af..f6a2b6133 100644
--- a/plugins/pom.xml
+++ b/plugins/pom.xml
@@ -16,6 +16,7 @@
pell-multipart
jasperreports
jfreechart
+ jsf
diff --git a/plugins/struts1/src/main/resources/struts-plugin.xml b/plugins/struts1/src/main/resources/struts-plugin.xml
index 9114f590c..2d7bfaed4 100644
--- a/plugins/struts1/src/main/resources/struts-plugin.xml
+++ b/plugins/struts1/src/main/resources/struts-plugin.xml
@@ -13,7 +13,7 @@
/org/apache/struts/validator/validator-rules.xml,/WEB-INF/validation.xml
-
+
@@ -24,6 +24,7 @@
+