diff --git a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/AbstractConverterTagGenerator.java b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/AbstractConverterTagGenerator.java
index 26fd284..04a3717 100644
--- a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/AbstractConverterTagGenerator.java
+++ b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/AbstractConverterTagGenerator.java
@@ -48,7 +48,7 @@
       StringWriter sw = new StringWriter();
       PrettyWriter out = new PrettyWriter(sw);
 
-      Set imports = createImports(converter);
+      Set<String> imports = createImports(converter);
       writeHeader(out, converter, imports);
 
       writeClass(out, converter);
@@ -79,7 +79,7 @@
     }
   }
 
-  protected abstract Set createImports(ConverterBean converter);
+  protected abstract Set<String> createImports(ConverterBean converter);
   protected abstract void writeSetProperty(PrettyWriter out, PropertyBean property);
 
 
@@ -174,7 +174,8 @@
     }
 
 
-  private void writeClass(PrettyWriter out, AbstractTagBean abstractTag) {
+  protected void writeClass(PrettyWriter out, AbstractTagBean abstractTag)
+  {
     String className = Util.getClassFromFullClass(abstractTag.getTagClass());
     if (is12())
     {
diff --git a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/AbstractTagGenerator.java b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/AbstractTagGenerator.java
index 3d180ea..15c8c6e 100644
--- a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/AbstractTagGenerator.java
+++ b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/AbstractTagGenerator.java
@@ -181,7 +181,7 @@
 
   protected void writeImports(
     PrettyWriter   out,
-    AbstractTagBean  abstractTagBean, Set imports)
+    AbstractTagBean  abstractTagBean, Set<String> imports)
   {
 
     // do not import implicit!
@@ -191,7 +191,7 @@
     GeneratorHelper.writeImports(out, packageName, imports);
   }
 
-  protected final void writeHeader(PrettyWriter out, AbstractTagBean converter, Set imports) {
+  protected final void writeHeader(PrettyWriter out, AbstractTagBean converter, Set<String> imports) {
     String packageName = Util.getPackageFromFullClass(converter.getTagClass());
     // header/copyright
     writePreamble(out);
@@ -209,7 +209,7 @@
     out.println(" */");
   }
 
-  protected void addImportsFromPropertes(AbstractTagBean abstractTagBean, Set imports) {
+  protected void addImportsFromPropertes(AbstractTagBean abstractTagBean, Set<String> imports) {
     Iterator<PropertyBean> properties = abstractTagBean.properties();
     properties = new FilteredIterator(properties, new TagAttributeFilter());
 
@@ -242,9 +242,9 @@
   // TODO: for everything but Locale, String[], Date, and TimeZone,
   // in JSF 1.2 we should already be going through coercion, and
   // not need any of the "TagUtils" functions
-  private Map _createResolvableTypes()
+  private Map<String, String> _createResolvableTypes()
   {
-    Map resolvableTypes = new HashMap();
+    Map<String, String> resolvableTypes = new HashMap<String, String>();
 
     resolvableTypes.put("boolean", "Boolean");
     resolvableTypes.put("char", "Character");
diff --git a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/AbstractValidatorTagGenerator.java b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/AbstractValidatorTagGenerator.java
index ff19d86..fc455ff 100644
--- a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/AbstractValidatorTagGenerator.java
+++ b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/AbstractValidatorTagGenerator.java
@@ -49,7 +49,7 @@
 
       StringWriter sw = new StringWriter();
       PrettyWriter out = new PrettyWriter(sw);
-      Set imports = createImports(validator);
+      Set<String> imports = createImports(validator);
       writeHeader(out, validator, imports);
 
       writeClass(out, validator);
@@ -81,9 +81,10 @@
     }
   }
 
-  protected abstract Set createImports(ValidatorBean validator);
+  protected abstract Set<String> createImports(ValidatorBean validator);
 
-  protected void writeClass(PrettyWriter out, AbstractTagBean abstractTag) {
+  protected void writeClass(PrettyWriter out, AbstractTagBean abstractTag)
+  {
     String className = Util.getClassFromFullClass(abstractTag.getTagClass());
     if (is12())
     {
diff --git a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/MyFacesConverterTagGenerator.java b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/MyFacesConverterTagGenerator.java
index 0462ed8..a21203d 100644
--- a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/MyFacesConverterTagGenerator.java
+++ b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/MyFacesConverterTagGenerator.java
@@ -33,8 +33,8 @@
     super(is12, licenseHeader, log);
   }
 
-  protected Set createImports(ConverterBean converter) {
-    Set imports = new TreeSet();
+  protected Set<String> createImports(ConverterBean converter) {
+    Set<String> imports = new TreeSet<String>();
 
     if (is12())
     {
diff --git a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/TrinidadConverterTagGenerator.java b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/TrinidadConverterTagGenerator.java
index 85c280e..c6fdbe1 100644
--- a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/TrinidadConverterTagGenerator.java
+++ b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/TrinidadConverterTagGenerator.java
@@ -20,6 +20,7 @@
 
 import org.apache.maven.plugin.logging.Log;
 import org.apache.myfaces.trinidadbuild.plugin.faces.io.PrettyWriter;
+import org.apache.myfaces.trinidadbuild.plugin.faces.parse.AbstractTagBean;
 import org.apache.myfaces.trinidadbuild.plugin.faces.parse.ConverterBean;
 import org.apache.myfaces.trinidadbuild.plugin.faces.parse.PropertyBean;
 import org.apache.myfaces.trinidadbuild.plugin.faces.util.Util;
@@ -38,7 +39,7 @@
 
     if (is12())
     {
-      imports.add("javax.faces.webapp.ConverterELTag");
+      imports.add("org.apache.myfaces.trinidad.webapp.TrinidadConverterELTag");
       imports.add("javax.faces.context.FacesContext");
       imports.add("javax.faces.application.Application");
     }
@@ -66,7 +67,23 @@
     return imports;
   }
 
-
+  @Override
+  protected void writeClass(PrettyWriter out, AbstractTagBean abstractTag)
+  {
+    String className = Util.getClassFromFullClass(abstractTag.getTagClass());
+    if (is12())
+    {
+      out.println("public class " + className +
+                  " extends TrinidadConverterELTag");
+      out.println("{");
+      out.indent();
+    }
+    else
+    {
+      // non 1.2
+      super.writeClass(out, abstractTag);
+    }
+  }
 
 
   protected void writeSetProperty(
diff --git a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/TrinidadValidatorTagGenerator.java b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/TrinidadValidatorTagGenerator.java
index 1391fc8..2b2dac1 100644
--- a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/TrinidadValidatorTagGenerator.java
+++ b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/TrinidadValidatorTagGenerator.java
@@ -20,6 +20,7 @@
 
 import org.apache.maven.plugin.logging.Log;
 import org.apache.myfaces.trinidadbuild.plugin.faces.io.PrettyWriter;
+import org.apache.myfaces.trinidadbuild.plugin.faces.parse.AbstractTagBean;
 import org.apache.myfaces.trinidadbuild.plugin.faces.parse.PropertyBean;
 import org.apache.myfaces.trinidadbuild.plugin.faces.parse.ValidatorBean;
 import org.apache.myfaces.trinidadbuild.plugin.faces.util.Util;
@@ -38,7 +39,7 @@
 
     if (is12())
     {
-      imports.add("javax.faces.webapp.ValidatorELTag");
+      imports.add("org.apache.myfaces.trinidad.webapp.TrinidadValidatorELTag");
       imports.add("javax.faces.context.FacesContext");
       imports.add("javax.faces.application.Application");
     }
@@ -65,6 +66,24 @@
     addImportsFromPropertes(validator, imports);
     return imports;
   }
+  
+  @Override
+  protected void writeClass(PrettyWriter out, AbstractTagBean abstractTag)
+  {
+    String className = Util.getClassFromFullClass(abstractTag.getTagClass());
+    if (is12())
+    {
+      out.println("public class " + className +
+                  " extends TrinidadValidatorELTag");
+      out.println("{");
+      out.indent();
+    }
+    else
+    {
+      // non 1.2
+      super.writeClass(out, abstractTag);
+    }
+  }
 
   protected void writeSetProperty(
     PrettyWriter out,
