Tag for TomEE 1.5.1 and OpenEJB 4.5.1

git-svn-id: https://svn.apache.org/repos/asf/openejb/tags/openejb-4.5.1@1418534 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..d935154
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,82 @@
+# 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.
+
+# This file is used during development only.
+# It has just some handy shortcuts.
+TOMEE_VERSION=1.5.1
+TOMCAT_ZIP_NAME=apache-tomcat-7.0.33
+TOMCAT_ZIP=tomee/apache-tomcat/target/$(TOMCAT_ZIP_NAME)-SNAPSHOT.zip
+TOMEEPLUS_WAR=tomee/tomee-plus-webapp/target/tomee-plus-webapp-$(TOMEE_VERSION).war
+TOMEE_WAR=/home/tveronezi/dev/ws/openejb/trunk/tomee/tomee-webapp/target/tomee-webapp-$(TOMEE_VERSION).war
+TOMEEPLUS_ZIP=tomee/apache-tomee/target/apache-tomee-plus-$(TOMEE_VERSION).tar.gz
+
+$(TOMEE_WAR):
+	cd tomee/tomee-webapp/ && mvn clean install -DskipTests=true	
+
+$(TOMEEPLUS_WAR): $(TOMEE_WAR)
+	cd tomee/tomee-plus-webapp/ && mvn clean install -DskipTests=true	
+
+$(TOMCAT_ZIP):
+	cd tomee/apache-tomcat && mvn clean install	
+
+tomcat: $(TOMCAT_ZIP)
+
+tomee: tomcat $(TOMEEPLUS_WAR)
+
+kill-tomee: 
+	@if test -f target/runnner/tomcat-pid.txt; then \
+		kill -9 `cat target/runnner/tomcat-pid.txt`; \
+		rm target/runnner/tomcat-pid.txt; \
+	fi
+
+start-plus: kill-tomee tomee
+	mkdir -p target/runnner
+	cp $(TOMEEPLUS_ZIP) target/runnner/
+	rm -Rf target/runnner/apache-tomee-plus-$(TOMEE_VERSION) 
+	cd target/runnner/ && tar -xvzf apache-tomee-plus-$(TOMEE_VERSION).tar.gz
+	rm target/runnner/apache-tomee-plus-$(TOMEE_VERSION)/conf/tomcat-users.xml 	
+	cp tomee/tomee-webapp/src/test/conf/tomcat-users.xml target/runnner/apache-tomee-plus-$(TOMEE_VERSION)/conf/
+	export JPDA_SUSPEND=n && export CATALINA_PID=target/runnner/tomcat-pid.txt && ./target/runnner/apache-tomee-plus-$(TOMEE_VERSION)/bin/catalina.sh jpda start
+
+start-tomee: kill-tomee tomee
+	mkdir -p target/runnner
+	cp $(TOMCAT_ZIP) target/runnner/
+	rm -Rf target/runnner/$(TOMCAT_ZIP_NAME) 
+	cd target/runnner/ && unzip $(TOMCAT_ZIP_NAME)-SNAPSHOT.zip
+	cp tomee/tomee-plus-webapp/target/tomee-plus-webapp-$(TOMEE_VERSION).war \
+		target/runnner/$(TOMCAT_ZIP_NAME)/webapps/
+	rm target/runnner/apache-tomcat-7.0.33/conf/tomcat-users.xml 	
+	cp tomee/tomee-webapp/src/test/conf/tomcat-users.xml target/runnner/apache-tomcat-7.0.33/conf/
+	chmod +x target/runnner/$(TOMCAT_ZIP_NAME)/bin/startup.sh
+	chmod +x target/runnner/apache-tomcat-7.0.33/bin/catalina.sh
+	export JPDA_SUSPEND=n && export CATALINA_PID=target/runnner/tomcat-pid.txt && ./target/runnner/$(TOMCAT_ZIP_NAME)/bin/catalina.sh jpda start
+
+reload-tomee: kill-tomee
+	chmod +x target/runnner/$(TOMCAT_ZIP_NAME)/bin/startup.sh
+	chmod +x target/runnner/apache-tomcat-7.0.33/bin/catalina.sh
+	export CATALINA_PID=target/runnner/tomcat-pid.txt && ./target/runnner/$(TOMCAT_ZIP_NAME)/bin/catalina.sh jpda start
+
+up-static:
+	rm -Rf target/runnner/$(TOMCAT_ZIP_NAME)/webapps/tomee-plus-webapp-$(TOMEE_VERSION)/app
+	cp -r tomee/tomee-webapp/src/main/webapp/app target/runnner/$(TOMCAT_ZIP_NAME)/webapps/tomee-plus-webapp-$(TOMEE_VERSION)/
+	
+
+install-tomee: $(TOMCAT_ZIP) 
+	cd tomee && mvn clean install -DskipTests=true
+
+install-all:
+	mvn clean && mvn install -DskipTests=true
+
+.PHONY: install-all install-tomee tomcat tomee start-tomee reload-tomee kill-tomee up-static
diff --git a/arquillian/arquillian-common/pom.xml b/arquillian/arquillian-common/pom.xml
index 1ed0eac..da8e4ed 100644
--- a/arquillian/arquillian-common/pom.xml
+++ b/arquillian/arquillian-common/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>arquillian</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
 
   <artifactId>arquillian-common</artifactId>
diff --git a/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java b/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java
index b7a713e..8984c88 100644
--- a/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java
+++ b/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java
@@ -20,11 +20,14 @@
 import org.apache.openejb.BeanContext;
 import org.apache.openejb.InjectionProcessor;
 import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.OpenEJBRuntimeException;
 import org.apache.openejb.arquillian.common.mockito.MockitoEnricher;
 import org.apache.openejb.core.Operation;
 import org.apache.openejb.core.ThreadContext;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.spi.ContainerSystem;
+import org.apache.openejb.util.LogCategory;
+import org.apache.openejb.util.Logger;
 import org.apache.webbeans.container.BeanManagerImpl;
 import org.apache.webbeans.inject.AbstractInjectable;
 import org.apache.webbeans.inject.OWBInjector;
@@ -65,7 +68,14 @@
                     AbstractInjectable.instanceUnderInjection.remove();
                 }
             } catch (Throwable t) {
-                // ignored
+                Logger.getInstance(LogCategory.OPENEJB, OpenEJBEnricher.class).error("Can't inject in " + testInstance.getClass(), t);
+                if (t instanceof RuntimeException) {
+                    throw (RuntimeException) t;
+                }
+                if (t instanceof Exception) {
+                    throw new OpenEJBRuntimeException((Exception) t);
+                }
+                // ignoring other cases for the moment, let manage some OWB API change without making all tests failing
             }
         }
 
diff --git a/arquillian/arquillian-openejb-embedded-4/pom.xml b/arquillian/arquillian-openejb-embedded-4/pom.xml
index eeb4c9c..cd06663 100644
--- a/arquillian/arquillian-openejb-embedded-4/pom.xml
+++ b/arquillian/arquillian-openejb-embedded-4/pom.xml
@@ -22,13 +22,13 @@
   <parent>
     <artifactId>arquillian</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
   <artifactId>arquillian-openejb-embedded-4</artifactId>
   <name>OpenEJB :: Arquillian Adaptors Parent :: OpenEJB Container</name>
-  <version>4.5.1-SNAPSHOT</version>
+  <version>4.5.1</version>
 
   <dependencies>
     <dependency>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.jboss.shrinkwrap.resolver</groupId>
       <artifactId>shrinkwrap-resolver-impl-maven</artifactId>
-      <version>2.0.0-alpha-1</version>
+      <version>2.0.0-alpha-5</version>
       <scope>test</scope>
     </dependency>
 
diff --git a/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java b/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
index 4808b09..c411a86 100644
--- a/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
+++ b/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
@@ -94,7 +94,7 @@
             prefix = WEB_INF;
 
             final Map<ArchivePath, Node> content = archive.getContent(new IncludeRegExpPaths("/WEB-INF/lib/.*"));
-            for (Map.Entry<ArchivePath, Node> node : content.entrySet()) {
+            for (final Map.Entry<ArchivePath, Node> node : content.entrySet()) {
                 final Asset asset = node.getValue().getAsset();
                 if (UrlAsset.class.isInstance(asset)) {
                     additionalPaths.add(get(URL.class, "url", asset));
@@ -241,7 +241,7 @@
         return appModule;
     }
 
-    private static <T> T get(Class<T> fileClass, String attr, Asset asset) {
+    private static <T> T get(final Class<T> fileClass, final String attr, final Asset asset) {
         try {
             final Field field = asset.getClass().getDeclaredField(attr);
             field.setAccessible(true);
@@ -254,7 +254,7 @@
     private static org.apache.xbean.finder.archive.Archive finderArchive(final Node beansXml, final Archive<?> archive, final ClassLoader cl, final Collection<URL> additionalPaths) {
         final List<Class<?>> classes = new ArrayList<Class<?>>();
         final Map<ArchivePath, Node> content = archive.getContent(new IncludeRegExpPaths(".*.class"));
-        for (Map.Entry<ArchivePath, Node> node : content.entrySet()) {
+        for (final Map.Entry<ArchivePath, Node> node : content.entrySet()) {
             final String classname = name(node.getKey().get());
             try {
                 classes.add(cl.loadClass(classname));
@@ -266,7 +266,7 @@
         final Map<URL, List<String>> classesByUrl = new HashMap<URL, List<String>>();
 
         final List<org.apache.xbean.finder.archive.Archive> archives = new ArrayList<org.apache.xbean.finder.archive.Archive>();
-        for (URL url : DeploymentLoader.filterWebappUrls(additionalPaths.toArray(new URL[additionalPaths.size()]), null)) {
+        for (final URL url : DeploymentLoader.filterWebappUrls(additionalPaths.toArray(new URL[additionalPaths.size()]), null)) {
             final List<String> currentClasses = new ArrayList<String>();
             final org.apache.xbean.finder.archive.Archive newArchive = new FilteredArchive(new JarArchive(cl, url), new WebappAggregatedArchive.ScanXmlSaverFilter(false, null, currentClasses));
             classesByUrl.put(url, currentClasses);
@@ -276,12 +276,13 @@
         archives.add(new ClassesArchive(classes));
         if (beansXml != null) {
             final List<String> mainClasses = new ArrayList<String>();
-            for (Class<?> clazz : classes) {
+            for (final Class<?> clazz : classes) {
                 mainClasses.add(clazz.getName());
             }
             // look org.apache.openejb.config.AnnotationDeployer.DiscoverAnnotatedBeans.hasBeansXml()
             try {
-                classesByUrl.put(new URL("file://foo.jar!/WEB-INF/classes/"), mainClasses);
+                final URL key = new URL("jar:file://foo.jar!/WEB-INF/classes/");
+                classesByUrl.put(key, mainClasses);
             } catch (MalformedURLException mue) {
                 // no-op
             }
@@ -302,7 +303,7 @@
     private static class AssetSource implements ReadDescriptors.Source {
         private Asset asset;
 
-        private AssetSource(Asset asset) {
+        private AssetSource(final Asset asset) {
             this.asset = asset;
         }
 
diff --git a/arquillian/arquillian-openejb-embedded-4/src/test/java/org/apache/openejb/arquillian/openejb/CDIArquillianStandaloneTest.java b/arquillian/arquillian-openejb-embedded-4/src/test/java/org/apache/openejb/arquillian/openejb/CDIArquillianStandaloneTest.java
index 94ed19b..c230731 100644
--- a/arquillian/arquillian-openejb-embedded-4/src/test/java/org/apache/openejb/arquillian/openejb/CDIArquillianStandaloneTest.java
+++ b/arquillian/arquillian-openejb-embedded-4/src/test/java/org/apache/openejb/arquillian/openejb/CDIArquillianStandaloneTest.java
@@ -16,8 +16,6 @@
  */
 package org.apache.openejb.arquillian.openejb;
 
-import javax.ejb.Singleton;
-import javax.inject.Inject;
 import org.apache.openejb.loader.SystemInstance;
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
@@ -28,6 +26,9 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import javax.ejb.Singleton;
+import javax.inject.Inject;
+
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
@@ -42,8 +43,8 @@
     @Deployment
     public static JavaArchive archive() {
         return ShrinkWrap.create(JavaArchive.class, CDIArquillianStandaloneTest.class.getSimpleName().concat(".jar"))
-                    .addClasses(ABean.class, AnEJB.class)
-                    .addAsManifestResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml"));
+                .addClasses(ABean.class, AnEJB.class)
+                .addAsManifestResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml"));
     }
 
     @Test
@@ -57,7 +58,10 @@
         assertNotNull(ejbFromCdiAnnotation);
     }
 
-    public static class ABean {}
+    public static class ABean {
+    }
 
-    @Singleton public static class AnEJB {}
+    @Singleton
+    public static class AnEJB {
+    }
 }
diff --git a/arquillian/arquillian-openejb-embedded-4/src/test/java/org/apache/openejb/arquillian/openejb/SWMavenWarTest.java b/arquillian/arquillian-openejb-embedded-4/src/test/java/org/apache/openejb/arquillian/openejb/SWMavenWarTest.java
index b236d6d..b868d54 100644
--- a/arquillian/arquillian-openejb-embedded-4/src/test/java/org/apache/openejb/arquillian/openejb/SWMavenWarTest.java
+++ b/arquillian/arquillian-openejb-embedded-4/src/test/java/org/apache/openejb/arquillian/openejb/SWMavenWarTest.java
@@ -21,8 +21,7 @@
 import org.jboss.arquillian.junit.Arquillian;
 import org.jboss.shrinkwrap.api.ShrinkWrap;
 import org.jboss.shrinkwrap.api.spec.WebArchive;
-import org.jboss.shrinkwrap.resolver.api.DependencyResolvers;
-import org.jboss.shrinkwrap.resolver.api.maven.MavenDependencyResolver;
+import org.jboss.shrinkwrap.resolver.api.maven.Maven;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -32,7 +31,6 @@
 import javax.ejb.TransactionManagementType;
 
 import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertThat;
 
 @RunWith(Arquillian.class)
@@ -41,10 +39,10 @@
     public static WebArchive war() {
         return ShrinkWrap.create(WebArchive.class, "sw-mvn.war")
                 .addClass(SWBean.class)
-                .addAsLibraries(DependencyResolvers.use(MavenDependencyResolver.class)
-                        .loadEffectivePom("src/test/resources/a-pom.xml")
-                        .importAllDependencies()
-                        .resolveAsFiles());
+                .addAsLibraries(Maven.resolver()
+                        .loadPomFromFile("src/test/resources/a-pom.xml")
+                        .importRuntimeAndTestDependencies()
+                        .asFile());
     }
 
     @Singleton
diff --git a/arquillian/arquillian-openejb-transaction-provider/pom.xml b/arquillian/arquillian-openejb-transaction-provider/pom.xml
index 745dbc3..a261039 100644
--- a/arquillian/arquillian-openejb-transaction-provider/pom.xml
+++ b/arquillian/arquillian-openejb-transaction-provider/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>arquillian</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/arquillian/arquillian-tomee-common/pom.xml b/arquillian/arquillian-tomee-common/pom.xml
index 5061305..d49d387 100644
--- a/arquillian/arquillian-tomee-common/pom.xml
+++ b/arquillian/arquillian-tomee-common/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>arquillian</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
   <artifactId>arquillian-tomee-common</artifactId>
   <packaging>jar</packaging>
diff --git a/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/RemoteInitialContextObserver.java b/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/RemoteInitialContextObserver.java
new file mode 100644
index 0000000..ca5a31b
--- /dev/null
+++ b/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/RemoteInitialContextObserver.java
@@ -0,0 +1,91 @@
+/**
+ * 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.openejb.arquillian.common;
+
+import org.jboss.arquillian.container.spi.client.protocol.metadata.HTTPContext;
+import org.jboss.arquillian.container.spi.client.protocol.metadata.ProtocolMetaData;
+import org.jboss.arquillian.core.api.Instance;
+import org.jboss.arquillian.core.api.InstanceProducer;
+import org.jboss.arquillian.core.api.annotation.Inject;
+import org.jboss.arquillian.core.api.annotation.Observes;
+import org.jboss.arquillian.test.spi.annotation.SuiteScoped;
+import org.jboss.arquillian.test.spi.event.enrichment.BeforeEnrichment;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.util.Properties;
+
+public class RemoteInitialContextObserver {
+    private static final String REMOTE_INITIAL_CONTEXT_FACTORY = "org.apache.openejb.client.RemoteInitialContextFactory";
+
+    @Inject
+    @SuiteScoped
+    private InstanceProducer<Context> context;
+
+    @Inject
+    private Instance<ProtocolMetaData> protocolMetadata;
+
+    public void beforeSuite(@Observes final BeforeEnrichment event) {
+        final ProtocolMetaData metaData = protocolMetadata.get();
+        if(metaData == null || !metaData.hasContext(HTTPContext.class)) {
+            return;
+        }
+
+        try {
+            Thread.currentThread().getContextClassLoader().loadClass(REMOTE_INITIAL_CONTEXT_FACTORY);
+
+            final HTTPContext httpContext = metaData.getContexts(HTTPContext.class).iterator().next();
+            final Properties props = new Properties();
+            props.setProperty(Context.INITIAL_CONTEXT_FACTORY, REMOTE_INITIAL_CONTEXT_FACTORY);
+            props.setProperty(Context.PROVIDER_URL, "http://" + httpContext.getHost() + ":" + httpContext.getPort() + "/tomee/ejb");
+
+            context.set((Context) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), new Class<?>[]{ Context.class }, new MultipleContextHandler(new InitialContext(), new InitialContext(props))));
+        } catch (ClassNotFoundException e) {
+            // no-op
+        } catch (NamingException e) {
+            // no-op
+        }
+    }
+
+    private static class MultipleContextHandler implements InvocationHandler {
+        private final InitialContext[] contexts;
+
+        public MultipleContextHandler(final InitialContext... initialContexts) {
+            contexts = initialContexts;
+        }
+
+        @Override
+        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+            Exception err = null;
+            for (Context ctx : contexts) {
+                try {
+                    return method.invoke(ctx, args);
+                } catch (Exception e) {
+                    err = e;
+                }
+            }
+            if (err != null) {
+                throw err;
+            }
+            return null;
+        }
+    }
+}
diff --git a/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java b/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java
index f44d52a..503a462 100644
--- a/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java
+++ b/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java
@@ -262,23 +262,7 @@
     @Override
     public ProtocolMetaData deploy(Archive<?> archive) throws DeploymentException {
         try {
-            String tmpDir = configuration.getAppWorkingDir();
-            File file, folderFile;
-            int i = 0;
-            do { // be sure we don't override something existing
-                file = new File(tmpDir + File.separator + i++ + File.separator + archive.getName());
-                if (file.isDirectory() || !file.getName().endsWith("ar")) {
-                	folderFile = file;
-                } else {
-                	final String name = file.getName();
-                	folderFile = new File(file.getParentFile(), name.substring(0, name.length() - 4));
-                }
-            } while (file.getParentFile().exists()); // we will delete the parent (to clean even complicated unpacking)
-            if (!file.getParentFile().exists() && !file.getParentFile().mkdirs()) {
-                LOGGER.warning("can't create " + file.getParent());
-            }
-
-            archiveWithTestInfo(archive).as(ZipExporter.class).exportTo(file, true);
+            final File file = dumpFile(archive);
 
             final String fileName = file.getName();
             if (fileName.endsWith(".war")) { // ??
@@ -326,6 +310,32 @@
         }
     }
 
+    protected File dumpFile(final Archive<?> archive) {
+        String tmpDir = configuration.getAppWorkingDir();
+        Files.deleteOnExit(new File(tmpDir));
+
+        File file, folderFile;
+        int i = 0;
+        do { // be sure we don't override something existing
+            file = new File(tmpDir + File.separator + i++ + File.separator + archive.getName());
+            if (file.isDirectory() || !file.getName().endsWith("ar")) {
+                folderFile = file;
+            } else {
+                final String name = file.getName();
+                folderFile = new File(file.getParentFile(), name.substring(0, name.length() - 4));
+            }
+        } while (file.getParentFile().exists()); // we will delete the parent (to clean even complicated unpacking)
+        if (!file.getParentFile().exists() && !file.getParentFile().mkdirs()) {
+            LOGGER.warning("can't create " + file.getParent());
+        }
+
+        Files.deleteOnExit(file.getParentFile());
+
+        archiveWithTestInfo(archive).as(ZipExporter.class).exportTo(file, true);
+
+        return file;
+    }
+
     private Collection<String> apps() {
         final Collection<String> paths = new ArrayList<String>();
         try {
diff --git a/arquillian/arquillian-tomee-embedded/pom.xml b/arquillian/arquillian-tomee-embedded/pom.xml
index 1b256cf..bc9c975 100644
--- a/arquillian/arquillian-tomee-embedded/pom.xml
+++ b/arquillian/arquillian-tomee-embedded/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>arquillian</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
   <artifactId>arquillian-tomee-embedded</artifactId>
   <packaging>jar</packaging>
diff --git a/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java b/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java
index 3cb9ebe..b689a74 100644
--- a/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java
+++ b/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java
@@ -43,23 +43,24 @@
 
     private Container container;
 
+    @Override
     public Class<EmbeddedTomEEConfiguration> getConfigurationClass() {
         return EmbeddedTomEEConfiguration.class;
     }
 
     @Override
-    public void setup(EmbeddedTomEEConfiguration configuration) {
+    public void setup(final EmbeddedTomEEConfiguration configuration) {
         super.setup(configuration);
-        container = new Container();
-        container.setup(convertConfiguration(configuration));
+        this.container = new Container();
+        this.container.setup(this.convertConfiguration(configuration));
     }
 
     /*
      * Not exactly as elegant as I'd like. Maybe we could have the EmbeddedServer configuration in openejb-core so all the adapters can use it.
      * Depending on tomee-embedded is fine in this adapter, but less desirable in the others, as we'd get loads of stuff in the classpath we don't need.
      */
-    private Configuration convertConfiguration(EmbeddedTomEEConfiguration tomeeConfiguration) {
-    	Configuration configuration = new Configuration();
+    private Configuration convertConfiguration(final EmbeddedTomEEConfiguration tomeeConfiguration) {
+    	final Configuration configuration = new Configuration();
     	configuration.setDir(tomeeConfiguration.getDir());
     	configuration.setHttpPort(tomeeConfiguration.getHttpPort());
     	configuration.setStopPort(tomeeConfiguration.getStopPort());
@@ -73,7 +74,7 @@
     @Override
     public void start() throws LifecycleException {
         try {
-            container.start();
+            this.container.start();
             SystemInstance.get().setComponent(AdditionalBeanDiscoverer.class, new TestClassDiscoverer());
         } catch (Exception e) {
             e.printStackTrace();
@@ -84,7 +85,7 @@
     @Override
     public void stop() throws LifecycleException {
         try {
-            container.stop();
+            this.container.stop();
         } catch (Exception e) {
             throw new LifecycleException("Unable to stop server", e);
         }
@@ -96,21 +97,24 @@
     }
 
     @Override
-    public ProtocolMetaData deploy(Archive<?> archive) throws DeploymentException {
+    public ProtocolMetaData deploy(final Archive<?> archive) throws DeploymentException {
     	try {
+            /* don't do it since it should be configurable
             final File tempDir = Files.createTempDir();
-            final String name = archive.getName();
             final File file = new File(tempDir, name);
+            */
+            final String name = archive.getName();
+            final File file = this.dumpFile(archive);
             ARCHIVES.put(archive, file);
-            archiveWithTestInfo(archive).as(ZipExporter.class).exportTo(file, true);
+            this.archiveWithTestInfo(archive).as(ZipExporter.class).exportTo(file, true);
 
-            container.deploy(name, file);
-            final AppInfo info = container.getInfo(name);
-            final String context = getArchiveNameWithoutExtension(archive);
+            this.container.deploy(name, file);
+            final AppInfo info = this.container.getInfo(name);
+            final String context = this.getArchiveNameWithoutExtension(archive);
 
-            final HTTPContext httpContext = new HTTPContext(configuration.getHost(), configuration.getHttpPort());
+            final HTTPContext httpContext = new HTTPContext(this.configuration.getHost(), this.configuration.getHttpPort());
             httpContext.add(new Servlet("ArquillianServletRunner", "/" + context));
-            addServlets(httpContext, info);
+            this.addServlets(httpContext, info);
 
             return new ProtocolMetaData().addContext(httpContext);
         } catch (Exception e) {
@@ -120,16 +124,16 @@
     }
 
     @Override
-    public void undeploy(Archive<?> archive) throws DeploymentException {
+    public void undeploy(final Archive<?> archive) throws DeploymentException {
     	try {
             final String name = archive.getName();
-            container.undeploy(name);
+            this.container.undeploy(name);
         } catch (Exception e) {
             e.printStackTrace();
             throw new DeploymentException("Unable to undeploy", e);
         }
-        File file = ARCHIVES.remove(archive);
-        File folder = new File(file.getParentFile(), file.getName().substring(0, file.getName().length() - 5));
+        final File file = ARCHIVES.remove(archive);
+        final File folder = new File(file.getParentFile(), file.getName().substring(0, file.getName().length() - 5));
         if (folder.exists()) {
             Files.delete(folder);
         }
diff --git a/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEExtension.java b/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEExtension.java
index 1113e4c..b3645d8 100644
--- a/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEExtension.java
+++ b/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEExtension.java
@@ -18,6 +18,7 @@
 package org.apache.openejb.arquillian.embedded;
 
 import org.apache.openejb.arquillian.common.ArquillianUtil;
+import org.apache.openejb.arquillian.common.RemoteInitialContextObserver;
 import org.apache.openejb.arquillian.common.TomEEInjectionEnricher;
 import org.apache.openejb.arquillian.common.deployment.DeploymentExceptionObserver;
 import org.apache.openejb.arquillian.common.deployment.DeploymentExceptionProvider;
@@ -36,6 +37,7 @@
         if (ArquillianUtil.isCurrentAdapter(ADAPTER)) {
             builder.service(DeployableContainer.class, EmbeddedTomEEContainer.class)
                 .observer(DeploymentExceptionObserver.class)
+                .observer(RemoteInitialContextObserver.class)
                 .service(TestEnricher.class, TomEEInjectionEnricher.class)
                 .service(TransactionProvider.class, OpenEJBTransactionProvider.class)
                 .service(ResourceProvider.class, DeploymentExceptionProvider.class);
diff --git a/arquillian/arquillian-tomee-moviefun-example/pom.xml b/arquillian/arquillian-tomee-moviefun-example/pom.xml
index e5257b7..551c3d8 100644
--- a/arquillian/arquillian-tomee-moviefun-example/pom.xml
+++ b/arquillian/arquillian-tomee-moviefun-example/pom.xml
@@ -18,7 +18,7 @@
   <parent>
     <groupId>org.apache.openejb</groupId>
     <artifactId>arquillian</artifactId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
   <artifactId>arquillian-tomee-moviefun-example</artifactId>
   <packaging>war</packaging>
diff --git a/arquillian/arquillian-tomee-moviefun-example/src/main/java/org/superbiz/moviefun/MoviesImpl.java b/arquillian/arquillian-tomee-moviefun-example/src/main/java/org/superbiz/moviefun/MoviesImpl.java
index 8dfd49b..2b15941 100644
--- a/arquillian/arquillian-tomee-moviefun-example/src/main/java/org/superbiz/moviefun/MoviesImpl.java
+++ b/arquillian/arquillian-tomee-moviefun-example/src/main/java/org/superbiz/moviefun/MoviesImpl.java
@@ -43,7 +43,8 @@
         return entityManager.find(Movie.class, id);
     }
 
-    @Override public void clean() {
+    @Override
+    public void clean() {
         entityManager.createQuery("delete from Movie").executeUpdate();
     }
 
diff --git a/arquillian/arquillian-tomee-moviefun-example/src/test/java/org/superbiz/moviefun/MoviesHtmlUnitTest.java b/arquillian/arquillian-tomee-moviefun-example/src/test/java/org/superbiz/moviefun/MoviesHtmlUnitTest.java
index 95ea928..11e75ac 100644
--- a/arquillian/arquillian-tomee-moviefun-example/src/test/java/org/superbiz/moviefun/MoviesHtmlUnitTest.java
+++ b/arquillian/arquillian-tomee-moviefun-example/src/test/java/org/superbiz/moviefun/MoviesHtmlUnitTest.java
@@ -16,29 +16,28 @@
  */
 package org.superbiz.moviefun;
 
-import static org.junit.Assert.assertTrue;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Properties;
-
-import javax.ejb.embeddable.EJBContainer;
-
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import org.apache.commons.io.FileUtils;
 import org.apache.tomee.embedded.EmbeddedTomEEContainer;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import com.gargoylesoftware.htmlunit.WebClient;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import javax.ejb.embeddable.EJBContainer;
+import java.io.File;
+import java.io.IOException;
+import java.util.Properties;
+
+import static org.junit.Assert.assertTrue;
 
 public class MoviesHtmlUnitTest {
-	
-	private static EJBContainer container;
+
+    private static EJBContainer container;
     private static File webApp;
 
-    @BeforeClass public static void start() throws IOException {
+    @BeforeClass
+    public static void start() throws IOException {
         webApp = createWebApp();
         Properties p = new Properties();
         p.setProperty(EJBContainer.APP_NAME, "moviefun");
@@ -48,7 +47,8 @@
         container = EJBContainer.createEJBContainer(p);
     }
 
-    @AfterClass public static void stop() {
+    @AfterClass
+    public static void stop() {
         if (container != null) {
             container.close();
         }
@@ -60,7 +60,7 @@
             }
         }
     }
-    
+
     private static File createWebApp() throws IOException {
         File file = new File(System.getProperty("java.io.tmpdir") + "/tomee-" + Math.random());
         if (!file.mkdirs() && !file.exists()) {
@@ -68,13 +68,13 @@
         }
 
         FileUtils.copyDirectory(new File("target/classes"), new File(file, "WEB-INF/classes"));
-	    FileUtils.copyDirectory(new File("target/test-libs"), new File(file, "WEB-INF/lib"));
+        FileUtils.copyDirectory(new File("target/test-libs"), new File(file, "WEB-INF/lib"));
         FileUtils.copyDirectory(new File("src/main/webapp"), file);
 
         return file;
     }
 
-	@Test
+    @Test
     public void testShouldMakeSureWebappIsWorking() throws Exception {
         WebClient webClient = new WebClient();
         HtmlPage page = webClient.getPage("http://localhost:9999/moviefun/setup");
diff --git a/arquillian/arquillian-tomee-moviefun-example/src/test/java/org/superbiz/moviefun/MoviesTest.java b/arquillian/arquillian-tomee-moviefun-example/src/test/java/org/superbiz/moviefun/MoviesTest.java
index 650cb01..1b5634e 100644
--- a/arquillian/arquillian-tomee-moviefun-example/src/test/java/org/superbiz/moviefun/MoviesTest.java
+++ b/arquillian/arquillian-tomee-moviefun-example/src/test/java/org/superbiz/moviefun/MoviesTest.java
@@ -32,9 +32,10 @@
 
 public class MoviesTest {
     private static EJBContainer ejbContainer;
-	private static MoviesRemote movies;
+    private static MoviesRemote movies;
 
-    @BeforeClass public static void setUp() throws Exception {
+    @BeforeClass
+    public static void setUp() throws Exception {
         final Properties props = new Properties();
         props.setProperty(DeploymentFilterable.CLASSPATH_INCLUDE, ".*arquillian-tomee-moviefun-example.*"); // arquillian-tomee excluded by default
         ejbContainer = EJBContainer.createEJBContainer(props);
@@ -44,34 +45,38 @@
         movies = (MoviesRemote) object;
     }
 
-    @AfterClass public static void tearDown() {
+    @AfterClass
+    public static void tearDown() {
         if (ejbContainer != null) {
             ejbContainer.close();
         }
     }
 
-    @Before @After public void clean() {
+    @Before
+    @After
+    public void clean() {
         movies.clean();
     }
 
-	@Test public void testShouldAddAMovie() throws Exception {
-		Movie movie = new Movie();
-		movie.setDirector("Michael Bay");
-		movie.setGenre("Action");
-		movie.setRating(9);
-		movie.setTitle("Bad Boys");
-		movie.setYear(1995);
-		movies.addMovie(movie);
-		
-		assertEquals(1, movies.count());
-		List<Movie> moviesFound = movies.findByTitle("Bad Boys");
-		
-		assertEquals(1, moviesFound.size());
-		assertEquals("Michael Bay", moviesFound.get(0).getDirector());
-		assertEquals("Action", moviesFound.get(0).getGenre());
-		assertEquals(9, moviesFound.get(0).getRating());
-		assertEquals("Bad Boys", moviesFound.get(0).getTitle());
-		assertEquals(1995, moviesFound.get(0).getYear());
-	}
-	
+    @Test
+    public void testShouldAddAMovie() throws Exception {
+        Movie movie = new Movie();
+        movie.setDirector("Michael Bay");
+        movie.setGenre("Action");
+        movie.setRating(9);
+        movie.setTitle("Bad Boys");
+        movie.setYear(1995);
+        movies.addMovie(movie);
+
+        assertEquals(1, movies.count());
+        List<Movie> moviesFound = movies.findByTitle("Bad Boys");
+
+        assertEquals(1, moviesFound.size());
+        assertEquals("Michael Bay", moviesFound.get(0).getDirector());
+        assertEquals("Action", moviesFound.get(0).getGenre());
+        assertEquals(9, moviesFound.get(0).getRating());
+        assertEquals("Bad Boys", moviesFound.get(0).getTitle());
+        assertEquals(1995, moviesFound.get(0).getYear());
+    }
+
 }
diff --git a/arquillian/arquillian-tomee-remote/pom.xml b/arquillian/arquillian-tomee-remote/pom.xml
index 068c87a..a0cc3b7 100644
--- a/arquillian/arquillian-tomee-remote/pom.xml
+++ b/arquillian/arquillian-tomee-remote/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>arquillian</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
   <artifactId>arquillian-tomee-remote</artifactId>
   <packaging>jar</packaging>
@@ -66,7 +66,7 @@
       <groupId>org.apache.openejb</groupId>
       <artifactId>apache-tomee</artifactId>
       <type>zip</type>
-      <version>1.5.1-SNAPSHOT</version>
+      <version>1.5.1</version>
       <classifier>webprofile</classifier>
       <scope>provided</scope>
     </dependency>
@@ -95,7 +95,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>arquillian-tomee-common</artifactId>
-      <version>1.5.1-SNAPSHOT</version>
+      <version>1.5.1</version>
       <type>jar</type>
       <scope>compile</scope>
     </dependency>
@@ -122,7 +122,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>arquillian-common</artifactId>
-      <version>1.5.1-SNAPSHOT</version>
+      <version>1.5.1</version>
     </dependency>
 
     <dependency>
diff --git a/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEExtension.java b/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEExtension.java
index a0fc5ca..a136de3 100644
--- a/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEExtension.java
+++ b/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEExtension.java
@@ -18,6 +18,7 @@
 package org.apache.tomee.arquillian.remote;
 
 import org.apache.openejb.arquillian.common.ArquillianUtil;
+import org.apache.openejb.arquillian.common.RemoteInitialContextObserver;
 import org.apache.openejb.arquillian.common.deployment.DeploymentExceptionObserver;
 import org.apache.openejb.arquillian.common.deployment.DeploymentExceptionProvider;
 import org.jboss.arquillian.container.spi.client.container.DeployableContainer;
@@ -25,15 +26,41 @@
 import org.jboss.arquillian.core.spi.LoadableExtension;
 import org.jboss.arquillian.test.spi.enricher.resource.ResourceProvider;
 
-public class RemoteTomEEExtension implements LoadableExtension {
-    private static final String ADAPTER = "tomee-remote";
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.locks.ReentrantLock;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
-    @Override public void register(ExtensionBuilder builder) {
+public class RemoteTomEEExtension implements LoadableExtension {
+
+    private static final String ADAPTER = "tomee-remote";
+    private static final AtomicBoolean registered = new AtomicBoolean(false);
+    private static final ReentrantLock lock = new ReentrantLock();
+
+    @Override
+    public void register(final ExtensionBuilder builder) {
         if (ArquillianUtil.isCurrentAdapter(ADAPTER)) {
-            builder.service(DeployableContainer.class, RemoteTomEEContainer.class)
-                .service(AuxiliaryArchiveAppender.class, RemoteTomEEEJBEnricherArchiveAppender.class)
-                .observer(DeploymentExceptionObserver.class)
-                .service(ResourceProvider.class, DeploymentExceptionProvider.class);
+
+            final ReentrantLock l = lock;
+            l.lock();
+
+            try {
+
+                if (!registered.getAndSet(true)) {
+
+                    try {
+                        builder.observer(RemoteInitialContextObserver.class);
+                        builder.observer(DeploymentExceptionObserver.class);
+                        builder.service(DeployableContainer.class, RemoteTomEEContainer.class)
+                                                    .service(AuxiliaryArchiveAppender.class, RemoteTomEEEJBEnricherArchiveAppender.class)
+                                                    .service(ResourceProvider.class, DeploymentExceptionProvider.class);
+                    } catch (IllegalArgumentException e) {
+                        Logger.getLogger(RemoteTomEEExtension.class.getName()).log(Level.WARNING, "RemoteTomEEExtension: " + e.getMessage());
+                    }
+                }
+            } finally {
+                l.unlock();
+            }
         }
     }
 }
diff --git a/arquillian/arquillian-tomee-remote/src/test/java/org/apache/openejb/arquillian/session/PojoSessionScoped.java b/arquillian/arquillian-tomee-remote/src/test/java/org/apache/openejb/arquillian/session/PojoSessionScoped.java
index 256a3f0..ec1d171 100644
--- a/arquillian/arquillian-tomee-remote/src/test/java/org/apache/openejb/arquillian/session/PojoSessionScoped.java
+++ b/arquillian/arquillian-tomee-remote/src/test/java/org/apache/openejb/arquillian/session/PojoSessionScoped.java
@@ -33,7 +33,8 @@
         ms = System.currentTimeMillis();
     }
 
-    @PostConstruct public void initId() {
+    @PostConstruct
+    public void initId() {
         id = ID.incrementAndGet();
     }
 
diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-codi-tests/pom.xml b/arquillian/arquillian-tomee-tests/arquillian-tomee-codi-tests/pom.xml
index f02ff03..afee5e1 100644
--- a/arquillian/arquillian-tomee-tests/arquillian-tomee-codi-tests/pom.xml
+++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-codi-tests/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>arquillian-tomee-tests</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
 
   <artifactId>arquillian-tomee-codi-tests</artifactId>
diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-config-tests/pom.xml b/arquillian/arquillian-tomee-tests/arquillian-tomee-config-tests/pom.xml
index 70f64a7..fe7d609 100644
--- a/arquillian/arquillian-tomee-tests/arquillian-tomee-config-tests/pom.xml
+++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-config-tests/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>arquillian-tomee-tests</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
 
   <artifactId>arquillian-tomee-config-tests</artifactId>
diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxrs-tests/pom.xml b/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxrs-tests/pom.xml
index b325ba9..79dd8b9 100644
--- a/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxrs-tests/pom.xml
+++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxrs-tests/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>arquillian-tomee-tests</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
 
   <artifactId>arquillian-tomee-jaxrs-tests</artifactId>
diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxws-tests/pom.xml b/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxws-tests/pom.xml
index 545e136..60d4ace 100644
--- a/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxws-tests/pom.xml
+++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxws-tests/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>arquillian-tomee-tests</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
 
   <artifactId>arquillian-tomee-jaxws-tests</artifactId>
diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-jms-tests/pom.xml b/arquillian/arquillian-tomee-tests/arquillian-tomee-jms-tests/pom.xml
index e49cd9e..80aeae0 100644
--- a/arquillian/arquillian-tomee-tests/arquillian-tomee-jms-tests/pom.xml
+++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-jms-tests/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>arquillian-tomee-tests</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
 
   <artifactId>arquillian-tomee-jms-tests</artifactId>
diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/pom.xml b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/pom.xml
index 0f593e1..9a92e22 100644
--- a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/pom.xml
+++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>arquillian-tomee-tests</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
 
   <artifactId>arquillian-tomee-webprofile-tests</artifactId>
diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/ear/EarTest.java b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/ear/EarTest.java
index dc00e5f..d8f5362 100644
--- a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/ear/EarTest.java
+++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/ear/EarTest.java
@@ -44,6 +44,7 @@
 /**
  * @version $Rev$ $Date$
  */
+@SuppressWarnings("UseOfSystemOutOrSystemErr")
 @RunWith(Arquillian.class)
 public class EarTest {
 
@@ -102,7 +103,7 @@
         private Bean bean;
 
         @Override
-        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        protected void service(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
             resp.getWriter().print(bean.getMessage());
         }
     }
diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/getresources/GetResourcesListener.java b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/getresources/GetResourcesListener.java
index 43175aa..11b918f 100644
--- a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/getresources/GetResourcesListener.java
+++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/getresources/GetResourcesListener.java
@@ -30,7 +30,8 @@
  */
 @WebListener
 public class GetResourcesListener implements ServletContextListener {
-    @Override public void contextInitialized(ServletContextEvent sce) {
+    @Override
+    public void contextInitialized(ServletContextEvent sce) {
         GetResourcesHolder.RESOURCE_NUMBER = 0;
         try {
             ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
@@ -44,7 +45,8 @@
         }
     }
 
-    @Override public void contextDestroyed(ServletContextEvent sce) {
-         // no-op
+    @Override
+    public void contextDestroyed(ServletContextEvent sce) {
+        // no-op
     }
 }
diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/getresources/GetResourcesServletExporter.java b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/getresources/GetResourcesServletExporter.java
index 2806f2c..8554d4b 100644
--- a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/getresources/GetResourcesServletExporter.java
+++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/getresources/GetResourcesServletExporter.java
@@ -28,7 +28,8 @@
 
 @WebServlet(name = "get-resources", urlPatterns = "/get-resources")
 public class GetResourcesServletExporter extends HttpServlet {
-    @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+    @Override
+    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         resp.setContentType("text/plain");
         final PrintWriter writer = resp.getWriter();
         writer.write("foundFromListener=" + GetResourcesHolder.RESOURCE_NUMBER);
diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/getresources/GetResourcesTest.java b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/getresources/GetResourcesTest.java
index 5ba8934..c89e705 100644
--- a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/getresources/GetResourcesTest.java
+++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/getresources/GetResourcesTest.java
@@ -17,9 +17,6 @@
 
 package org.apache.openejb.arquillian.tests.getresources;
 
-import java.io.IOException;
-import java.net.URL;
-import org.apache.ziplock.JarLocation;
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
 import org.jboss.arquillian.test.api.ArquillianResource;
@@ -31,6 +28,9 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.io.IOException;
+import java.net.URL;
+
 import static org.apache.openejb.arquillian.tests.Tests.assertOutput;
 
 /**
@@ -51,11 +51,12 @@
                 .addAsResource(Thread.currentThread().getContextClassLoader().getResource("test.getresources"), "/config/test.getresources")
                 .addAsResource(Thread.currentThread().getContextClassLoader().getResource("test.getresources"), "/config/test.getresources2")
                 .setWebXML(new StringAsset(
-                      Descriptors.create(WebAppDescriptor.class)
-                        .version("3.0").exportAsString()));
+                        Descriptors.create(WebAppDescriptor.class)
+                                .version("3.0").exportAsString()));
     }
 
-    @Test public void check() throws IOException {
+    @Test
+    public void check() throws IOException {
         assertOutput(url.toExternalForm() + "get-resources", "foundFromListener=1");
         assertOutput(url.toExternalForm() + "get-resources", "servletContextGetResource=ok");
     }
diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/hibernate/HibernateTest.java b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/hibernate/HibernateTest.java
index 3cfb02c..f43ccfa 100644
--- a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/hibernate/HibernateTest.java
+++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/hibernate/HibernateTest.java
@@ -28,17 +28,17 @@
 import org.jboss.shrinkwrap.api.ShrinkWrap;
 import org.jboss.shrinkwrap.api.asset.StringAsset;
 import org.jboss.shrinkwrap.api.spec.WebArchive;
-import org.jboss.shrinkwrap.resolver.api.DependencyResolvers;
 import org.jboss.shrinkwrap.resolver.api.ResolutionException;
-import org.jboss.shrinkwrap.resolver.api.maven.MavenDependencyResolver;
-import org.jboss.shrinkwrap.resolver.api.maven.MavenResolutionFilter;
-import org.jboss.shrinkwrap.resolver.api.maven.filter.ScopeFilter;
+import org.jboss.shrinkwrap.resolver.api.maven.Maven;
+import org.jboss.shrinkwrap.resolver.api.maven.ScopeType;
+import org.jboss.shrinkwrap.resolver.api.maven.strategy.AcceptScopesStrategy;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
 import javax.persistence.EntityManagerFactory;
 import java.io.File;
 
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 @RunWith(Arquillian.class)
@@ -47,50 +47,51 @@
     public static WebArchive war() {
         File[] hibernate;
         try { // try offline first since it is generally faster
-            hibernate = DependencyResolvers.use(MavenDependencyResolver.class)
-                .goOffline()
-                .loadEffectivePom("src/test/resources/hibernate-pom.xml")
-                .importAnyDependencies(new ScopeFilter("compile"))
-                .resolveAsFiles();
+            hibernate = Maven.resolver()
+                    .offline(true)
+                    .loadPomFromFile("src/test/resources/hibernate-pom.xml")
+                    .importRuntimeAndTestDependencies(new AcceptScopesStrategy(ScopeType.COMPILE))
+                    .asFile();
         } catch (ResolutionException re) { // try on central
-            hibernate = DependencyResolvers.use(MavenDependencyResolver.class)
-                    .loadEffectivePom("src/test/resources/hibernate-pom.xml")
-                    .importAnyDependencies(new ScopeFilter("compile"))
-                    .resolveAsFiles();
+            hibernate = Maven.resolver()
+                    .loadPomFromFile("src/test/resources/hibernate-pom.xml")
+                    .importRuntimeAndTestDependencies(new AcceptScopesStrategy(ScopeType.COMPILE))
+                    .asFile();
         }
 
         return ShrinkWrap.create(WebArchive.class, "hibernate-app.war")
-                    .addAsWebInfResource(new StringAsset("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
-                            "<persistence version=\"2.0\"\n" +
-                            "    xmlns=\"http://java.sun.com/xml/ns/persistence\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
-                            "    xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence" +
-                            "                         http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd\">\n" +
-                            "  <persistence-unit name=\"hibernate\">\n" +
-                            "    <provider>org.hibernate.ejb.HibernatePersistence</provider>\n" +
-                            "    <exclude-unlisted-classes>true</exclude-unlisted-classes>\n" +
-                            "    <properties>\n" +
-                            "      <property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\" />\n" +
-                            "    </properties>\n" +
-                            "  </persistence-unit>\n" +
-                            "</persistence>"), ArchivePaths.create("persistence.xml"))
-                    .addAsLibraries(hibernate)
-                    .addAsLibraries(JarLocation.jarLocation(ResolutionException.class))
-                    .addAsLibraries(JarLocation.jarLocation(MavenResolutionFilter.class));
+                .addAsWebInfResource(new StringAsset("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+                        "<persistence version=\"2.0\"\n" +
+                        "    xmlns=\"http://java.sun.com/xml/ns/persistence\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
+                        "    xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence" +
+                        "                         http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd\">\n" +
+                        "  <persistence-unit name=\"hibernate\">\n" +
+                        "    <provider>org.hibernate.ejb.HibernatePersistence</provider>\n" +
+                        "    <exclude-unlisted-classes>true</exclude-unlisted-classes>\n" +
+                        "    <properties>\n" +
+                        "      <property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\" />\n" +
+                        "    </properties>\n" +
+                        "  </persistence-unit>\n" +
+                        "</persistence>"), ArchivePaths.create("persistence.xml"))
+                .addAsLibraries(hibernate)
+                .addAsLibraries(JarLocation.jarLocation(ResolutionException.class))
+                .addAsLibraries(JarLocation.jarLocation(org.jboss.shrinkwrap.resolver.api.maven.filter.MavenResolutionFilter.class));
     }
 
     @Test // using an internal lookup because in tomee embedded new InitialContext() is not guaranteed
     public void checkEmIsHibernateOne() throws Exception {
         AppInfo info = null;
-        for (AppInfo app : SystemInstance.get().getComponent(Assembler.class).getDeployedApplications()) {
+        for (final AppInfo app : SystemInstance.get().getComponent(Assembler.class).getDeployedApplications()) {
             if (app.appId.endsWith("hibernate-app")) {
                 info = app;
                 break;
             }
         }
 
+        assertNotNull(info);
         final EntityManagerFactory emf = (EntityManagerFactory)
-            SystemInstance.get().getComponent(ContainerSystem.class)
-                .getJNDIContext().lookup(Assembler.PERSISTENCE_UNIT_NAMING_CONTEXT + info.persistenceUnits.iterator().next().id);
+                SystemInstance.get().getComponent(ContainerSystem.class)
+                        .getJNDIContext().lookup(Assembler.PERSISTENCE_UNIT_NAMING_CONTEXT + info.persistenceUnits.iterator().next().id);
         assertTrue(((ReloadableEntityManagerFactory) emf).getDelegate().getClass().getName().startsWith("org.hibernate."));
     }
 }
diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/tomcat/ResourceMergeTest.java b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/tomcat/ResourceMergeTest.java
index 0dcb6eb..13c283b 100644
--- a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/tomcat/ResourceMergeTest.java
+++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/tomcat/ResourceMergeTest.java
@@ -26,26 +26,29 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import javax.annotation.Resource;
 import javax.naming.NamingException;
 
+import static org.junit.Assert.assertNotNull;
+
 @RunWith(Arquillian.class)
 public class ResourceMergeTest {
     @Deployment
     public static WebArchive war() {
         return ShrinkWrap.create(WebArchive.class, "resource.war")
-                .addClasses(SomeResource.class)
-                .setWebXML(new StringAsset(Descriptors.create(WebAppDescriptor.class)
-                        .version("3.0")
-                        .getOrCreateResourceRef()
-                            .resRefName("some-resource")
-                            .mappedName("some-resource")
-                            .resType(SomeResource.class.getName())
-                        .up()
-                        .exportAsString()));
+                .addClasses(SomeResource.class, SomeResourceFactory.class)
+                .add(new StringAsset("<Context>\n" +
+                        "  <Resource name=\"some-resource\"\n" +
+                        "            type=\"" + SomeResource.class.getName() + "\"\n" +
+                        "            factory=\"" + SomeResourceFactory.class.getName() + "\"/>\n" +
+                        "</Context>"), "META-INF/context.xml");
     }
 
+    @Resource(name = "some-resource")
+    private SomeResource sr;
+
     @Test
-    public void noExceptionWereThrownDuringDeployment() throws NamingException {
-        // no-op
+    public void checkResource() throws NamingException {
+        assertNotNull(sr);
     }
 }
diff --git a/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/Notifier.java b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/tomcat/SomeResourceFactory.java
similarity index 65%
copy from examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/Notifier.java
copy to arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/tomcat/SomeResourceFactory.java
index 5e12908..2bcbd26 100644
--- a/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/Notifier.java
+++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/tomcat/SomeResourceFactory.java
@@ -14,11 +14,16 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package org.superbiz.moviefun;
+package org.apache.openejb.arquillian.tests.tomcat;
 
-/**
- * @version $Revision$ $Date$
- */
-public interface Notifier {
-    void notify(String message);
+import javax.naming.Context;
+import javax.naming.Name;
+import javax.naming.spi.ObjectFactory;
+import java.util.Hashtable;
+
+public class SomeResourceFactory implements ObjectFactory {
+    @Override
+    public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable<?, ?> environment) throws Exception {
+        return new SomeResource();
+    }
 }
diff --git a/arquillian/arquillian-tomee-tests/pom.xml b/arquillian/arquillian-tomee-tests/pom.xml
index 9c4f515..a32f60b 100644
--- a/arquillian/arquillian-tomee-tests/pom.xml
+++ b/arquillian/arquillian-tomee-tests/pom.xml
@@ -15,7 +15,7 @@
   <parent>
     <artifactId>arquillian</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
   <artifactId>arquillian-tomee-tests</artifactId>
   <packaging>pom</packaging>
@@ -41,7 +41,7 @@
     <dependency>
       <groupId>org.jboss.shrinkwrap.resolver</groupId>
       <artifactId>shrinkwrap-resolver-impl-maven</artifactId>
-      <version>2.0.0-alpha-1</version>
+      <version>2.0.0-alpha-5</version>
       <scope>test</scope>
     </dependency>
 
@@ -99,7 +99,7 @@
     <dependency> <!-- tomee-embedded needs it + dependencies but tomee-*-remote doesn't need dependencies so to avoid conflicts bringing it back here -->
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
     </dependency>
 
     <!-- just to get it in the correct order -->
@@ -219,13 +219,13 @@
                   }
                 }
 
-                println("Embedded adapter activated ? " + !props['skip.embedded'])
-                println("Remote webprofile adapter activated ? " + !props['skip.remote.webprofile'])
-                println("Remote jaxrs adapter activated ? " + !props['skip.remote.jaxrs'])
-                println("Remote plus adapter activated ? " + !props['skip.remote.plus'])
-                println("Webapp weprofile adapter activated ? " + !props['skip.webapp.webprofile'])
-                println("Webapp jaxrs adapter activated ? " + !props['skip.webapp.jaxrs'])
-                println("Webapp plus adapter activated ? " + !props['skip.webapp.plus'])
+                println("Embedded adapter activated ? " + !Boolean.parseBoolean(props['skip.embedded']))
+                println("Remote webprofile adapter activated ? " + !Boolean.parseBoolean(props['skip.remote.webprofile']))
+                println("Remote jaxrs adapter activated ? " + !Boolean.parseBoolean(props['skip.remote.jaxrs']))
+                println("Remote plus adapter activated ? " + !Boolean.parseBoolean(props['skip.remote.plus']))
+                println("Webapp weprofile adapter activated ? " + !Boolean.parseBoolean(props['skip.webapp.webprofile']))
+                println("Webapp jaxrs adapter activated ? " + !Boolean.parseBoolean(props['skip.webapp.jaxrs']))
+                println("Webapp plus adapter activated ? " + !Boolean.parseBoolean(props['skip.webapp.plus']))
               </source>
             </configuration>
           </plugin>
@@ -356,7 +356,6 @@
               <skip>true</skip>
               <parallel>none</parallel>
               <threadCount>1</threadCount>
-<includes><include>**/Ear*</include></includes>
             </configuration>
           </plugin>
         </plugins>
diff --git a/arquillian/arquillian-tomee-webapp-remote/pom.xml b/arquillian/arquillian-tomee-webapp-remote/pom.xml
index 1214087..662934d 100644
--- a/arquillian/arquillian-tomee-webapp-remote/pom.xml
+++ b/arquillian/arquillian-tomee-webapp-remote/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>arquillian</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
   <artifactId>arquillian-tomee-webapp-remote</artifactId>
   <packaging>jar</packaging>
diff --git a/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java b/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java
index 8d01e2d..a0b353d 100644
--- a/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java
+++ b/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java
@@ -143,7 +143,7 @@
                         .append(configuration.getHost())
                         .append(":")
                         .append(configuration.getHttpPort())
-                        .append("/tomee/installer?action=install&auto=true");
+                        .append("/tomee/installer");
 
                 installer.addTomEEAdminConfInTomcatUsers(true);
 
diff --git a/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappExtension.java b/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappExtension.java
index 344b943..aee7a76 100644
--- a/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappExtension.java
+++ b/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappExtension.java
@@ -18,6 +18,7 @@
 package org.apache.tomee.arquillian.webapp;
 
 import org.apache.openejb.arquillian.common.ArquillianUtil;
+import org.apache.openejb.arquillian.common.RemoteInitialContextObserver;
 import org.apache.openejb.arquillian.common.deployment.DeploymentExceptionObserver;
 import org.apache.openejb.arquillian.common.deployment.DeploymentExceptionProvider;
 import org.jboss.arquillian.container.spi.client.container.DeployableContainer;
@@ -25,16 +26,42 @@
 import org.jboss.arquillian.core.spi.LoadableExtension;
 import org.jboss.arquillian.test.spi.enricher.resource.ResourceProvider;
 
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.locks.ReentrantLock;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
 public class TomEEWebappExtension implements LoadableExtension {
+
     private static final String ADAPTER = "tomee-webapp";
+    private static final AtomicBoolean registered = new AtomicBoolean(false);
+    private static final ReentrantLock lock = new ReentrantLock();
 
     @Override
-    public void register(ExtensionBuilder builder) {
+    public void register(final ExtensionBuilder builder) {
         if (ArquillianUtil.isCurrentAdapter(ADAPTER)) {
-            builder.service(DeployableContainer.class, TomEEWebappContainer.class)
-                .service(AuxiliaryArchiveAppender.class, TomEEWebappEJBEnricherArchiveAppender.class)
-                .observer(DeploymentExceptionObserver.class)
-                .service(ResourceProvider.class, DeploymentExceptionProvider.class);
+
+            final ReentrantLock l = lock;
+            l.lock();
+
+            try {
+
+                if (!registered.getAndSet(true)) {
+
+                    try {
+                        builder.observer(DeploymentExceptionObserver.class);
+                        builder.observer(RemoteInitialContextObserver.class);
+
+                        builder.service(DeployableContainer.class, TomEEWebappContainer.class)
+                                .service(AuxiliaryArchiveAppender.class, TomEEWebappEJBEnricherArchiveAppender.class)
+                                .service(ResourceProvider.class, DeploymentExceptionProvider.class);
+                    } catch (IllegalArgumentException e) {
+                        Logger.getLogger(TomEEWebappExtension.class.getName()).log(Level.WARNING, "TomEEWebappExtension: " + e.getMessage());
+                    }
+                }
+            } finally {
+                l.unlock();
+            }
         }
     }
 }
diff --git a/arquillian/arquillian-tomee-webapp-remote/src/test/java/org/apache/openejb/arquillian/TomEEContainerWithInstallerServletTest.java b/arquillian/arquillian-tomee-webapp-remote/src/test/java/org/apache/openejb/arquillian/TomEEContainerWithInstallerServletTest.java
index f8eeda9..05181d6 100644
--- a/arquillian/arquillian-tomee-webapp-remote/src/test/java/org/apache/openejb/arquillian/TomEEContainerWithInstallerServletTest.java
+++ b/arquillian/arquillian-tomee-webapp-remote/src/test/java/org/apache/openejb/arquillian/TomEEContainerWithInstallerServletTest.java
@@ -30,9 +30,6 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import javax.ejb.EJB;
-import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
 import java.net.URL;
 
 @RunWith(Arquillian.class)
@@ -42,16 +39,17 @@
     @Deployment
     public static WebArchive createDeployment() {
         return ShrinkWrap.create(WebArchive.class, "test.war")
-        		.addClass(TestServlet.class).addClass(TestEjb.class).addClass(TomEEContainerWithInstallerServletTest.class)
+                .addClass(TestServlet.class).addClass(TestEjb.class).addClass(TomEEContainerWithInstallerServletTest.class)
                 .setWebXML(new StringAsset(
-                		Descriptors.create(WebAppDescriptor.class)
-                			.version("3.0")
+                        Descriptors.create(WebAppDescriptor.class)
+                                .version("3.0")
                                 .createServlet().servletName("servlet-ejb").servletClass(TestServlet.class.getName()).up()
                                 .createServletMapping().servletName("servlet-ejb").urlPattern("/ejb").up()
                                 .exportAsString()));
     }
 
-    @ArquillianResource private URL url;
+    @ArquillianResource
+    private URL url;
 
     @Test
     public void testShouldBeAbleToAccessServletAndEjb() throws Exception {
diff --git a/arquillian/arquillian-tomee-webapp-remote/src/test/java/org/apache/openejb/arquillian/session/PojoSessionScoped.java b/arquillian/arquillian-tomee-webapp-remote/src/test/java/org/apache/openejb/arquillian/session/PojoSessionScoped.java
index 256a3f0..ec1d171 100644
--- a/arquillian/arquillian-tomee-webapp-remote/src/test/java/org/apache/openejb/arquillian/session/PojoSessionScoped.java
+++ b/arquillian/arquillian-tomee-webapp-remote/src/test/java/org/apache/openejb/arquillian/session/PojoSessionScoped.java
@@ -33,7 +33,8 @@
         ms = System.currentTimeMillis();
     }
 
-    @PostConstruct public void initId() {
+    @PostConstruct
+    public void initId() {
         id = ID.incrementAndGet();
     }
 
diff --git a/arquillian/pom.xml b/arquillian/pom.xml
index 30fa601..3f4108b 100644
--- a/arquillian/pom.xml
+++ b/arquillian/pom.xml
@@ -23,18 +23,18 @@
   <parent>
     <artifactId>openejb</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
 
   <artifactId>arquillian</artifactId>
-  <version>1.5.1-SNAPSHOT</version>
+  <version>1.5.1</version>
   <packaging>pom</packaging>
   <name>OpenEJB :: Arquillian Adaptors Parent</name>
 
   <properties>
     <version.arquillian>1.0.3.Final</version.arquillian>
     <version.shrinkwrap.descriptor>2.0.0-alpha-4</version.shrinkwrap.descriptor>
-    <version.shrinkwrap.shrinkwrap>1.1.1-alpha-1</version.shrinkwrap.shrinkwrap>
+    <version.shrinkwrap.shrinkwrap>1.1.1-alpha-2</version.shrinkwrap.shrinkwrap>
   </properties>
 
   <modules>
diff --git a/arquillian/ziplock/pom.xml b/arquillian/ziplock/pom.xml
index 1ccd425..ee998cf 100644
--- a/arquillian/ziplock/pom.xml
+++ b/arquillian/ziplock/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>arquillian</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
   <artifactId>ziplock</artifactId>
   <packaging>jar</packaging>
diff --git a/arquillian/ziplock/src/main/java/org/apache/ziplock/IO.java b/arquillian/ziplock/src/main/java/org/apache/ziplock/IO.java
index 2e12f33..31bfea4 100644
--- a/arquillian/ziplock/src/main/java/org/apache/ziplock/IO.java
+++ b/arquillian/ziplock/src/main/java/org/apache/ziplock/IO.java
@@ -42,49 +42,49 @@
  */
 public class IO {
 
-    public static String readString(URL url) throws IOException {
+    public static String readString(final URL url) throws IOException {
         final InputStream in = url.openStream();
         try {
-            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
+            final BufferedReader reader = new BufferedReader(new InputStreamReader(in));
             return reader.readLine();
         } finally {
             close(in);
         }
     }
 
-    public static String readString(File file) throws IOException {
+    public static String readString(final File file) throws IOException {
         final FileReader in = new FileReader(file);
         try {
-            BufferedReader reader = new BufferedReader(in);
+            final BufferedReader reader = new BufferedReader(in);
             return reader.readLine();
         } finally {
             close(in);
         }
     }
 
-    public static String slurp(String fileName) throws IOException {
+    public static String slurp(final String fileName) throws IOException {
         return slurp(new File(fileName));
     }
 
-    public static String slurp(File file) throws IOException {
-        ByteArrayOutputStream out = new ByteArrayOutputStream();
+    public static String slurp(final File file) throws IOException {
+        final ByteArrayOutputStream out = new ByteArrayOutputStream();
         copy(file, out);
         return new String(out.toByteArray());
     }
 
-    public static String slurp(InputStream in) throws IOException {
-        ByteArrayOutputStream out = new ByteArrayOutputStream();
+    public static String slurp(final InputStream in) throws IOException {
+        final ByteArrayOutputStream out = new ByteArrayOutputStream();
         copy(in, out);
         return new String(out.toByteArray(), "UTF-8");
     }
 
-    public static String slurp(URL url) throws IOException {
-        ByteArrayOutputStream out = new ByteArrayOutputStream();
+    public static String slurp(final URL url) throws IOException {
+        final ByteArrayOutputStream out = new ByteArrayOutputStream();
         copy(url.openStream(), out);
         return new String(out.toByteArray());
     }
 
-    public static void writeString(File file, String string) throws IOException {
+    public static void writeString(final File file, final String string) throws IOException {
         final FileWriter out = new FileWriter(file);
         try {
             final BufferedWriter bufferedWriter = new BufferedWriter(out);
@@ -99,7 +99,7 @@
         }
     }
 
-    public static void copy(File from, OutputStream to) throws IOException {
+    public static void copy(final File from, final OutputStream to) throws IOException {
         final InputStream read = read(from);
         try {
             copy(read, to);
@@ -108,7 +108,7 @@
         }
     }
 
-    public static void copy(InputStream from, File to) throws IOException {
+    public static void copy(final InputStream from, final File to) throws IOException {
         final OutputStream write = write(to);
         try {
             copy(from, write);
@@ -117,7 +117,7 @@
         }
     }
 
-    public static void copy(InputStream from, File to, boolean append) throws IOException {
+    public static void copy(final InputStream from, final File to, final boolean append) throws IOException {
         final OutputStream write = write(to, append);
         try {
             copy(from, write);
@@ -126,8 +126,8 @@
         }
     }
 
-    public static void copy(InputStream from, OutputStream to) throws IOException {
-        byte[] buffer = new byte[1024];
+    public static void copy(final InputStream from, final OutputStream to) throws IOException {
+        final byte[] buffer = new byte[1024];
         int length = 0;
         while ((length = from.read(buffer)) != -1) {
             to.write(buffer, 0, length);
@@ -135,17 +135,17 @@
         to.flush();
     }
 
-    public static ZipOutputStream zip(File file) throws IOException {
+    public static ZipOutputStream zip(final File file) throws IOException {
         final OutputStream write = write(file);
         return new ZipOutputStream(write);
     }
 
-    public static ZipInputStream unzip(File file) throws IOException {
+    public static ZipInputStream unzip(final File file) throws IOException {
         final InputStream read = read(file);
         return new ZipInputStream(read);
     }
 
-    public static void close(Closeable closeable) throws IOException {
+    public static void close(final Closeable closeable) throws IOException {
         if (closeable == null) return;
         try {
             if (closeable instanceof Flushable) {
@@ -159,7 +159,7 @@
         }
     }
 
-    public static boolean delete(File file) {
+    public static boolean delete(final File file) {
         if (file == null) return false;
         if (!file.delete()) {
             System.err.println("Delete failed " + file.getAbsolutePath());
@@ -169,17 +169,17 @@
         return true;
     }
 
-    public static OutputStream write(File destination) throws FileNotFoundException {
+    public static OutputStream write(final File destination) throws FileNotFoundException {
         final OutputStream out = new FileOutputStream(destination);
         return new BufferedOutputStream(out, 32768);
     }
 
-    public static OutputStream write(File destination, boolean append) throws FileNotFoundException {
+    public static OutputStream write(final File destination, final boolean append) throws FileNotFoundException {
         final OutputStream out = new FileOutputStream(destination, append);
         return new BufferedOutputStream(out, 32768);
     }
 
-    public static InputStream read(File source) throws FileNotFoundException {
+    public static InputStream read(final File source) throws FileNotFoundException {
         final InputStream in = new FileInputStream(source);
         return new BufferedInputStream(in, 32768);
     }
diff --git a/assembly/openejb-lite/pom.xml b/assembly/openejb-lite/pom.xml
index f3219f5..696b982 100644
--- a/assembly/openejb-lite/pom.xml
+++ b/assembly/openejb-lite/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>assembly</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-lite</artifactId>
diff --git a/assembly/openejb-standalone/pom.xml b/assembly/openejb-standalone/pom.xml
index 22b50d2..9800cc9 100644
--- a/assembly/openejb-standalone/pom.xml
+++ b/assembly/openejb-standalone/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>assembly</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-standalone</artifactId>
diff --git a/assembly/pom.xml b/assembly/pom.xml
index 2d95b92..63e074b 100644
--- a/assembly/pom.xml
+++ b/assembly/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>openejb</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>assembly</artifactId>
diff --git a/checkstyle.xml b/checkstyle.xml
new file mode 100644
index 0000000..4cf9a6f
--- /dev/null
+++ b/checkstyle.xml
@@ -0,0 +1,34 @@
+<!DOCTYPE module SYSTEM "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
+<!--
+  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.
+  -->
+<module name="Checker">
+  <module name="TreeWalker">
+
+    <!-- @MyAnnotation public void ....-->
+    <module name="RegexpSinglelineJava">
+      <property name="format" value="^ +@[^ ]+ [a-zA-Z]"/>
+      <property name="ignoreComments" value="true"/>
+    </module>
+
+    <!-- @MyAnnotation(foo = "bar") public void ....-->
+    <module name="RegexpSinglelineJava">
+      <property name="format" value="^ +@[^ (]+ *\([^)]+ *\) +[a-zA-Z]"/>
+      <property name="ignoreComments" value="true"/>
+    </module>
+
+  </module>
+</module>
\ No newline at end of file
diff --git a/container/openejb-api/pom.xml b/container/openejb-api/pom.xml
index a9196d5..53562c8 100644
--- a/container/openejb-api/pom.xml
+++ b/container/openejb-api/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>container</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
diff --git a/container/openejb-core/pom.xml b/container/openejb-core/pom.xml
index c5a1538..9d823b5 100644
--- a/container/openejb-core/pom.xml
+++ b/container/openejb-core/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <artifactId>container</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-core</artifactId>
@@ -592,15 +592,15 @@
       <groupId>org.javassist</groupId>
       <artifactId>javassist</artifactId>
     </dependency>
-    <dependency>
+    <!--<dependency>
       <groupId>org.apache.openjpa</groupId>
       <artifactId>openjpa</artifactId>
+    </dependency>-->
+    <dependency>
+      <groupId>org.apache.openejb.patch</groupId>
+      <artifactId>openjpa-asm-shaded</artifactId>
+      <version>2.2.0</version>
     </dependency>
-    <!--<dependency>-->
-      <!--<groupId>org.apache.openejb.patch</groupId>-->
-      <!--<artifactId>openjpa-asm-shaded</artifactId>-->
-      <!--<version>2.2.0</version>-->
-    <!--</dependency>-->
     <dependency>
       <groupId>org.apache.bval</groupId>
       <artifactId>bval-core</artifactId>
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java b/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
index 9453684..51c21e0 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
@@ -153,11 +153,25 @@
         } catch (NamingException e) {
             throw new IllegalStateException(e);
         }
+
+        final Assembler assembler = SystemInstance.get().getComponent(Assembler.class);
+        if (assembler != null) {
+            for (AppInfo info : assembler.getDeployedApplications()) {
+                try {
+                    assembler.destroyApplication(info);
+                } catch (UndeployException e) {
+                    logger.error(e.getMessage(), e);
+                }
+            }
+        }
+
         try {
             stopContexts(webBeanContext.getContextsService(), servletContext, session);
         } catch (Exception e) {
             logger.warning("can't stop all CDI contexts", e);
         }
+
+        logger.info("Destroying OpenEJB container");
         OpenEJB.destroy();
         instance = null;
     }
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
index 75f9352..aa68187 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
@@ -23,7 +23,6 @@
 import org.apache.openejb.config.sys.AdditionalDeployments;
 import org.apache.openejb.config.sys.Deployments;
 import org.apache.openejb.config.sys.JaxbOpenejb;
-import org.apache.openejb.core.ThreadContext;
 import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.util.LogCategory;
@@ -225,7 +224,7 @@
         if (file.isDirectory()) {
             deps.setDir(file.getAbsolutePath());
         } else {
-            deps.setJar(file.getAbsolutePath());
+            deps.setFile(file.getAbsolutePath());
         }
 
         File config;
@@ -265,11 +264,11 @@
                     if (deps.getDir() != null && deps.getDir().equals(current.getDir())) {
                         it.remove();
                         break;
-                    } else if (deps.getJar() != null && deps.getJar().equals(current.getJar())) {
+                    } else if (deps.getFile() != null && deps.getFile().equals(current.getFile())) {
                         it.remove();
                         break;
                     } else { // exploded dirs
-                        String jar = deps.getJar();
+                        String jar = deps.getFile();
                         if (jar != null && jar.length() > 3 && jar.substring(0, jar.length() - 4).equals(deps.getDir())) {
                             it.remove();
                             break;
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java
index bd44204..0b02020 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java
@@ -17,6 +17,8 @@
 package org.apache.openejb.assembler.classic;
 
 import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Properties;
 import java.util.Set;
@@ -30,6 +32,7 @@
 
     public String appId;
     public String path;
+    public Set<String> paths = new LinkedHashSet<String>();
     public boolean autoDeploy = true;
     public boolean delegateFirst = true;
     public boolean standaloneModule;
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
index 71cf244..c3f442d 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
@@ -40,6 +40,8 @@
 import org.apache.openejb.assembler.classic.event.AssemblerBeforeApplicationDestroyed;
 import org.apache.openejb.assembler.classic.event.AssemblerCreated;
 import org.apache.openejb.assembler.classic.event.AssemblerDestroyed;
+import org.apache.openejb.assembler.classic.event.ContainerSystemPostCreate;
+import org.apache.openejb.assembler.classic.event.ContainerSystemPreDestroy;
 import org.apache.openejb.assembler.monitoring.JMXContainer;
 import org.apache.openejb.async.AsynchronousPool;
 import org.apache.openejb.cdi.CdiAppContextsService;
@@ -443,6 +445,8 @@
                 }
             }
         }
+
+        SystemInstance.get().fireEvent(new ContainerSystemPostCreate());
     }
 
     public boolean isDeployed(final String path) {
@@ -1100,6 +1104,8 @@
     @Override
     public synchronized void destroy() {
 
+        SystemInstance.get().fireEvent(new ContainerSystemPreDestroy());
+
         try {
             EjbTimerServiceImpl.shutdown();
         } catch (Exception e) {
@@ -2173,7 +2179,7 @@
         }
     }
 
-    private static class DeploymentListenerObserver {
+    public static class DeploymentListenerObserver {
         private final DeploymentListener delegate;
 
         public DeploymentListenerObserver(final DeploymentListener deploymentListener) {
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ContainerSystemInfo.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ContainerSystemInfo.java
index 27b4be9..020de03 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ContainerSystemInfo.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ContainerSystemInfo.java
@@ -25,4 +25,6 @@
 
     public final List<AppInfo> applications = new ArrayList<AppInfo>();
 
+    public final List<String> autoDeploy = new ArrayList<String>();
+
 }
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java
index 8959147..912f1f3 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java
@@ -20,6 +20,7 @@
 import org.apache.openejb.persistence.PersistenceUnitInfoImpl;

 

 import javax.persistence.EntityManagerFactory;

+import javax.persistence.ValidationMode;

 import javax.persistence.spi.PersistenceProvider;

 import java.util.HashMap;

 import java.util.Map;

@@ -48,7 +49,9 @@
 

             // Create entity manager factories with the validator factory

             final Map<String, Object> properties = new HashMap<String, Object>();

-            properties.put("javax.persistence.validator.ValidatorFactory", new ValidatorFactoryWrapper());

+            if (!ValidationMode.NONE.equals(unitInfo.getValidationMode())) {

+                properties.put("javax.persistence.validator.ValidatorFactory", new ValidatorFactoryWrapper());

+            }

             EntityManagerFactory emf = persistenceProvider.createContainerEntityManagerFactory(unitInfo, properties);

 

             if ((unitInfo.getProperties() != null

diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java
index 33a3ab9..f64cddf 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java
@@ -170,6 +170,7 @@
         public void begin(BeanContext beanContext);
 
         public String getName(Class interfce, String key, Interface type);
+
         public Map<String, String> getNames(Class interfce, Interface type);
 
         public void end();
@@ -185,7 +186,7 @@
 
         // Set in begin()
         private BeanContext bean;
-        
+
         // Set in begin()
         private HashMap<String, Map<String, StringTemplate>> templates;
 
@@ -243,7 +244,7 @@
         private Map<String, StringTemplate> addTemplate(Map<String, StringTemplate> map, String key, StringTemplate template) {
             Map<String, StringTemplate> m = map;
             if (m == null) {
-                m = new TreeMap<String, StringTemplate> ();
+                m = new TreeMap<String, StringTemplate>();
             }
             m.put(key, template);
             return m;
@@ -251,7 +252,7 @@
 
         public void begin(BeanContext bean) {
             this.bean = bean;
-            
+
             EnterpriseBeanInfo beanInfo = beanInfos.get(bean.getDeploymentID());
 
             templates = new HashMap<String, Map<String, StringTemplate>>();
@@ -307,22 +308,23 @@
             contextData.put("interfaceClass.packageName", packageName(interfce));
 
             StringTemplate stringTemplate = null;
-            
+
             if (template.containsKey(key)) {
                 stringTemplate = template.get(key);
             } else {
                 stringTemplate = template.get(DEFAULT_NAME_KEY);
             }
-            
-            if (stringTemplate == null){
+
+            if (stringTemplate == null) {
                 stringTemplate = template.values().iterator().next();
-            } 
-            
-            return  stringTemplate.apply(contextData);
-          
+            }
+
+            return stringTemplate.apply(contextData);
+
         }
 
-        @Override public Map<String, String> getNames(Class interfce, Interface type) {
+        @Override
+        public Map<String, String> getNames(Class interfce, Interface type) {
             Map<String, String> names = new HashMap<String, String>();
             for (String key : KEYS.split(",")) {
                 names.put(key, getName(interfce, key, type));
@@ -360,7 +362,8 @@
             return id;
         }
 
-        @Override public Map<String, String> getNames(Class interfce, Interface type) {
+        @Override
+        public Map<String, String> getNames(Class interfce, Interface type) {
             Map<String, String> names = new HashMap<String, String>();
             names.put("", getName(interfce, DEFAULT_NAME_KEY, type));
             return names;
@@ -409,7 +412,7 @@
 
                 // if the user inject the EJB using a parent class
                 if (!bean.getBeanClass().isInterface()) {
-                    for(Class<?> clazz = bean.getBeanClass().getSuperclass(); !clazz.equals(Object.class); clazz = clazz.getSuperclass()) {
+                    for (Class<?> clazz = bean.getBeanClass().getSuperclass(); !clazz.equals(Object.class); clazz = clazz.getSuperclass()) {
                         optionalBind(bindings, ref, "openejb/Deployment/" + format(id, clazz.getName(), InterfaceType.LOCALBEAN));
                     }
                 }
@@ -449,7 +452,7 @@
                 if (USE_OLD_JNDI_NAMES) {
                     bean.getModuleContext().getAppContext().getBindings().put(name, ref);
                 }
-                
+
                 if (simpleNameRef == null) simpleNameRef = ref;
             }
         } catch (NamingException e) {
@@ -475,7 +478,7 @@
                 if (USE_OLD_JNDI_NAMES) {
                     bean.getModuleContext().getAppContext().getBindings().put(name, ref);
                 }
-                
+
                 if (simpleNameRef == null) simpleNameRef = ref;
             }
         } catch (NamingException e) {
@@ -517,7 +520,7 @@
                 bind("openejb/remote/" + name, ref, bindings, beanInfo, homeInterface);
 
                 optionalBind(bindings, ref, "openejb/Deployment/" + format(id, homeInterface.getName(), InterfaceType.EJB_HOME));
-                
+
                 name = "openejb/Deployment/" + format(id, bean.getRemoteInterface().getName());
                 bind(name, ref, bindings, beanInfo, homeInterface);
 
@@ -673,8 +676,7 @@
         moduleContext.bind("module/" + beanName, ref);
         application.getBindings().put("module/" + beanName, ref);
     }
-    
-    
+
 
     /**
      * This may not be that performant, but it's certain to be faster than the
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java
index 9101fea..f1d9406 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java
@@ -116,7 +116,8 @@
                 || SystemInstance.get().getOptions().get(OPENEJB_JPA_CRITERIA_LOG_JPQL_LEVEL, prop.getProperty(OPENEJB_JPA_CRITERIA_LOG_JPQL_LEVEL, null)) != null;
     }
 
-    @Override public EntityManager createEntityManager() {
+    @Override
+    public EntityManager createEntityManager() {
         EntityManager em;
         try {
             em = delegate.createEntityManager();
@@ -499,7 +500,8 @@
                 ValidationMode mode = ValidationMode.valueOf(value.trim().toUpperCase());
                 reloadableEntityManagerFactory.setValidationMode(mode);
             } catch (Exception iae) {
-                // ignored
+                LOGGER.warning("Can't set validation mode " + value, iae);
+                reloadableEntityManagerFactory.setProperty(JAVAX_PERSISTENCE_VALIDATION_MODE, value);
             }
         }
 
@@ -582,7 +584,7 @@
 
         private TabularData tabularData(String typeName, String typeDescription, String description, List<?> list, Info info) {
             String[] names = new String[list.size()];
-            Object[] values= new Object[names.length];
+            Object[] values = new Object[names.length];
             int i = 0;
             for (Object o : list) {
                 names[i] = o.toString();
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/enricher/AdditionalLibClassLoaderEnricherObserver.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/enricher/AdditionalLibClassLoaderEnricherObserver.java
index 56ec58b..3534d07 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/enricher/AdditionalLibClassLoaderEnricherObserver.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/enricher/AdditionalLibClassLoaderEnricherObserver.java
@@ -48,7 +48,7 @@
             final File[] libs = dir.listFiles();
             if (libs != null) {
                 final ClassLoaderEnricher enricher = SystemInstance.get().getComponent(ClassLoaderEnricher.class);
-                for (File lib : libs) {
+                for (final File lib : libs) {
                     try {
                         enricher.addUrl(lib.toURI().toURL());
                     } catch (MalformedURLException e) {
diff --git a/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/Notifier.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/ContainerSystemPostCreate.java
similarity index 74%
rename from examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/Notifier.java
rename to container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/ContainerSystemPostCreate.java
index 5e12908..531d16c 100644
--- a/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/Notifier.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/ContainerSystemPostCreate.java
@@ -1,4 +1,4 @@
-/**
+/*
  * 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.
@@ -14,11 +14,19 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package org.superbiz.moviefun;
+package org.apache.openejb.assembler.classic.event;
+
+import org.apache.openejb.observer.Event;
 
 /**
- * @version $Revision$ $Date$
+ * @version $Rev$ $Date$
  */
-public interface Notifier {
-    void notify(String message);
+@Event
+public class ContainerSystemPostCreate {
+
+    @Override
+    public String toString() {
+        return "ContainerSystemPostCreate{}";
+    }
+
 }
diff --git a/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/Notifier.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/ContainerSystemPreDestroy.java
similarity index 74%
copy from examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/Notifier.java
copy to container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/ContainerSystemPreDestroy.java
index 5e12908..0c81df7 100644
--- a/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/Notifier.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/ContainerSystemPreDestroy.java
@@ -1,4 +1,4 @@
-/**
+/*
  * 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.
@@ -14,11 +14,18 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package org.superbiz.moviefun;
+package org.apache.openejb.assembler.classic.event;
+
+import org.apache.openejb.observer.Event;
 
 /**
- * @version $Revision$ $Date$
+ * @version $Rev$ $Date$
  */
-public interface Notifier {
-    void notify(String message);
+@Event
+public class ContainerSystemPreDestroy {
+
+    @Override
+    public String toString() {
+        return "ContainerSystemPreDestroy{}";
+    }
 }
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/bval/BeanValidationAppendixInterceptor.java b/container/openejb-core/src/main/java/org/apache/openejb/bval/BeanValidationAppendixInterceptor.java
index b602a40..9ce0d6c 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/bval/BeanValidationAppendixInterceptor.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/bval/BeanValidationAppendixInterceptor.java
@@ -44,7 +44,8 @@
 

     private SessionContext sessionContext;

 

-    @AroundInvoke public Object aroundInvoke(final InvocationContext ejbContext) throws Exception {

+    @AroundInvoke

+    public Object aroundInvoke(final InvocationContext ejbContext) throws Exception {

         Object validatorObject = null;

         Validator validator = null;

         try {

@@ -68,29 +69,29 @@
         if (APACHE_BVAL_METHOD_CLASS != null && validator != null) {

             validatorObject = validator.unwrap(APACHE_BVAL_METHOD_CLASS);

             violations = call(Set.class, validatorObject, "validateParameters",

-                new Object[]{

-                    bvalClazzToValidate, method, ejbContext.getParameters(), new Class[0]

-                },

-                new Class<?>[]{

-                    Class.class, Method.class, Object[].class, Class[].class

-                });

+                    new Object[]{

+                            bvalClazzToValidate, method, ejbContext.getParameters(), new Class[0]

+                    },

+                    new Class<?>[]{

+                            Class.class, Method.class, Object[].class, Class[].class

+                    });

         } else if (HIBERNATE_METHOD_CLASS != null && validator != null) {

             validatorObject = validator.unwrap(HIBERNATE_METHOD_CLASS);

             violations = call(Set.class, validatorObject, "validateAllParameters",

-                new Object[]{

-                    ejbContext.getTarget(), ejbContext.getMethod(), ejbContext.getParameters(), new Class[0]

-                },

-                new Class<?>[]{

-                    Object.class, Method.class, Object[].class, Class[].class

-                });

+                    new Object[]{

+                            ejbContext.getTarget(), ejbContext.getMethod(), ejbContext.getParameters(), new Class[0]

+                    },

+                    new Class<?>[]{

+                            Object.class, Method.class, Object[].class, Class[].class

+                    });

         } else { // a warning message to inform Apache Bean Validation is not present

             if (validator == null) {

                 logger.error("can't find validator");

             } else {

                 logger.warning("Apache Bean Validation is not present, "

-                    + BeanValidationAppendixInterceptor.class.getName() + " will not work. "

-                    + "Please put it if you want to validate your parameters and returned values "

-                    + "with bean validation JSR.");

+                        + BeanValidationAppendixInterceptor.class.getName() + " will not work. "

+                        + "Please put it if you want to validate your parameters and returned values "

+                        + "with bean validation JSR.");

             }

         }

 

@@ -103,20 +104,20 @@
         violations = Collections.emptySet();

         if (validatorObject != null && APACHE_BVAL_METHOD_CLASS != null) {

             violations = call(Set.class, validatorObject, "validateReturnedValue",

-                new Object[]{

-                    bvalClazzToValidate, method, returnedValue, new Class[0]

-                },

-                new Class<?>[]{

-                    Class.class, Method.class, Object.class, Class[].class

-                });

+                    new Object[]{

+                            bvalClazzToValidate, method, returnedValue, new Class[0]

+                    },

+                    new Class<?>[]{

+                            Class.class, Method.class, Object.class, Class[].class

+                    });

         } else if (validatorObject != null && HIBERNATE_METHOD_CLASS != null) {

             violations = call(Set.class, validatorObject, "validateReturnValue",

-                new Object[]{

-                    ejbContext.getTarget(), ejbContext.getMethod(), returnedValue, new Class[0]

-                },

-                new Class<?>[]{

-                    Object.class, Method.class, Object.class, Class[].class

-                });

+                    new Object[]{

+                            ejbContext.getTarget(), ejbContext.getMethod(), returnedValue, new Class[0]

+                    },

+                    new Class<?>[]{

+                            Object.class, Method.class, Object.class, Class[].class

+                    });

         }

 

         if (violations.size() > 0) {

diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
index 3c32082..8dd3fc9 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
@@ -222,7 +222,7 @@
             instance = createEjb(creationalContext);
         } else {
             final InstanceBean<T> bean = new InstanceBean<T>(this);
-            if (webBeansContext.getWebBeansUtil().isScopeTypeNormal(scopeClass)) {
+            if (webBeansContext.getBeanManagerImpl().isScopeTypeNormal(scopeClass)) {
                 instance = (T) webBeansContext.getProxyFactory().createNormalScopedBeanProxy(bean, creationalContext);
             } else {
                 final Context context = webBeansContext.getBeanManagerImpl().getContext(scopeClass);
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
index 7660cf6..814968d 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
@@ -74,7 +74,7 @@
             comparator = new DefaultClassLoaderComparator(classLoader);
         }
 
-        WebBeansContext webBeansContext = startupObject.getAppContext().getWebBeansContext();
+        final WebBeansContext webBeansContext = startupObject.getWebBeansContext();
         final AlternativesManager alternativesManager = webBeansContext.getAlternativesManager();
         final DecoratorsManager decoratorsManager = webBeansContext.getDecoratorsManager();
         final InterceptorsManager interceptorsManager = webBeansContext.getInterceptorsManager();
@@ -124,7 +124,7 @@
                     } /* else { don't do it, check is done when we know the beans.xml path --> org.apache.openejb.config.DeploymentLoader.addBeansXmls
                         throw new WebBeansConfigurationException("Interceptor class : " + clazz.getName() + " is already defined");
                     }*/
-                } else {
+                } else if (shouldThrowCouldNotLoadException(startupObject)) {
                     throw new WebBeansConfigurationException("Could not load interceptor class: " + className);
                 }
             }
@@ -137,7 +137,7 @@
                         decoratorsManager.addNewDecorator(clazz);
                         classes.add(clazz);
                     } // same than interceptors regarding throw new WebBeansConfigurationException("Decorator class : " + clazz.getName() + " is already defined");
-                } else {
+                } else if (shouldThrowCouldNotLoadException(startupObject)) {
                     throw new WebBeansConfigurationException("Could not load decorator class: " + className);
                 }
             }
@@ -148,7 +148,7 @@
                 if (clazz != null) {
                     alternativesManager.addStereoTypeAlternative(clazz, null, null);
                     classes.add(clazz);
-                } else {
+                } else if (shouldThrowCouldNotLoadException(startupObject)) {
                     throw new WebBeansConfigurationException("Could not load alternativeStereotype class: " + className);
                 }
             }
@@ -158,7 +158,7 @@
                 if (clazz != null) {
                     alternativesManager.addClazzAlternative(clazz, null, null);
                     classes.add(clazz);
-                } else {
+                } else if (shouldThrowCouldNotLoadException(startupObject)) {
                     throw new WebBeansConfigurationException("Could not load alternative class: " + className);
                 }
             }
@@ -183,6 +183,11 @@
 
     }
 
+    private static boolean shouldThrowCouldNotLoadException(final StartupObject startupObject) {
+        final AppInfo appInfo = startupObject.getAppInfo();
+        return appInfo.webAppAlone || appInfo.webApps.size() == 0 || startupObject.isFromWebApp();
+    }
+
     private void process(final ClassLoader classLoader, final Set<String> ejbClasses, final Iterator<String> it, final StartupObject startupObject, final ClassLoaderComparator comparator, final ClassLoader scl, final boolean filterByClassLoader) {
         final String className = it.next();
         if (ejbClasses.contains(className)) it.remove();
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/StartupObject.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/StartupObject.java
index 8e14792..a54cc50 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/StartupObject.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/StartupObject.java
@@ -66,10 +66,21 @@
         return webContext;
     }
 
+    public WebBeansContext getWebBeansContext() {
+        if (isFromWebApp()) {
+            return webContext.getWebbeansContext();
+        }
+        return appContext.getWebBeansContext();
+    }
+
     public ClassLoader getClassLoader() {
-        if (webContext != null) {
+        if (isFromWebApp()) {
             return webContext.getClassLoader();
         }
         return appContext.getClassLoader();
     }
+
+    public boolean isFromWebApp() {
+        return webContext != null;
+    }
 }
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java
index 67102f1..2a365af 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java
@@ -19,6 +19,7 @@
 import org.apache.webbeans.component.BeanManagerBean;
 import org.apache.webbeans.component.BuildInOwbBean;
 import org.apache.webbeans.component.ConversationBean;
+import org.apache.webbeans.component.InjectionPointBean;
 import org.apache.webbeans.container.BeanManagerImpl;
 
 import javax.el.ELResolver;
@@ -371,6 +372,12 @@
 
     @Override
     public Set<Bean<?>> getComponents() {
+        if (deploymentBeans.isEmpty()) {
+            // probably not yet merged (afterStart())
+            // so reuse parent beans
+            // this can happen for validations
+            return super.getBeans();
+        }
         return deploymentBeans;
     }
 
@@ -383,7 +390,7 @@
         deploymentBeans.clear();
         for (Bean<?> bean : getParentBm().getBeans()) {
             if (bean instanceof BeanManagerBean || bean instanceof BuildInOwbBean
-                    || bean instanceof ConversationBean) {
+                    || bean instanceof ConversationBean || bean instanceof InjectionPointBean) {
                 continue;
             }
             deploymentBeans.add(bean);
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/classloader/DefaultClassLoaderConfigurer.java b/container/openejb-core/src/main/java/org/apache/openejb/classloader/DefaultClassLoaderConfigurer.java
index 686baa5..6f5e8a3 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/classloader/DefaultClassLoaderConfigurer.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/classloader/DefaultClassLoaderConfigurer.java
@@ -61,7 +61,7 @@
             if (parent.exists()) {
                 final File[] files = parent.listFiles();
                 if (files != null) {
-                    for (File f : files) {
+                    for (final File f : files) {
                         final String name = f.getName();
                         if (f.isDirectory() || name.endsWith(".zip") || name.endsWith(".jar")) {
                             addedList.add(f.getAbsolutePath());
@@ -73,7 +73,7 @@
 
         added = new URL[addedList.size()];
         int i = 0;
-        for (String path : addedList) {
+        for (final String path : addedList) {
             try {
                 added[i++] = new File(path).toURI().toURL();
             } catch (MalformedURLException e) {
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java b/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
index 40570ad..4f594be 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
@@ -214,7 +214,6 @@
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.net.MalformedURLException;
-import java.net.URISyntaxException;
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.util.ArrayList;
@@ -1130,7 +1129,7 @@
              * Servlet, Filter, Listener
              */
 
-            Map<URL, List<String>> urlByClasses = null;
+            Map<String, String> urlByClasses = null;
             for (String apiClassName : WEB_CLASSES) {
                 final Class<? extends Annotation> clazz;
                 try {
@@ -1145,7 +1144,14 @@
                         if (limitedFinder instanceof AnnotationFinder) {
                             final Archive archive = ((AnnotationFinder) limitedFinder).getArchive();
                             if (archive instanceof WebappAggregatedArchive) {
-                                urlByClasses = ((WebappAggregatedArchive) archive).getClassesMap();
+                                final Map<URL, List<String>> index = ((WebappAggregatedArchive) archive).getClassesMap();
+                                urlByClasses = new HashMap<String, String>();
+                                for (Map.Entry<URL, List<String>> entry : index.entrySet()) {
+                                    final String url = entry.getKey().toExternalForm();
+                                    for (String current : entry.getValue()) {
+                                        urlByClasses.put(current,  url);
+                                    }
+                                }
                             }
                         }
                     }
@@ -1155,6 +1161,10 @@
                 addWebAnnotatedClassInfo(urlByClasses, webModule.getWebAnnotatedClasses(), found);
             }
 
+            if (urlByClasses != null) {
+                urlByClasses.clear();
+            }
+
             return webModule;
         }
 
@@ -4041,6 +4051,10 @@
                         consumer.getResourceRef().add(resourceRef);
                     }
 
+                    if (member != null) {
+                        resourceRef.setOrigin(member.getDeclaringClass() + "#" + member.getName());
+                    } // TODO: else @Resource on a class
+
                     if (resourceRef.getResAuth() == null) {
                         if (resource.authenticationType() == Resource.AuthenticationType.APPLICATION) {
                             resourceRef.setResAuth(ResAuth.APPLICATION);
@@ -5224,7 +5238,7 @@
         return classes;
     }
 
-    private static Map<String, Set<String>> addWebAnnotatedClassInfo(final Map<URL, List<String>> urlByClasses, final Map<String, Set<String>> classes, final List<Annotated<Class<?>>> found) {
+    private static Map<String, Set<String>> addWebAnnotatedClassInfo(final Map<String, String> urlByClasses, final Map<String, Set<String>> classes, final List<Annotated<Class<?>>> found) {
         for (Annotated<Class<?>> clazz : found) {
             final Class<?> loadedClass = clazz.get();
             final String name = loadedClass.getName();
@@ -5232,13 +5246,7 @@
             // url of the jar/folder containing the class
             String url = null;
             if (urlByClasses != null) {
-                for (Map.Entry<URL, List<String>> entry : urlByClasses.entrySet()) {
-                    for (String current : entry.getValue()) {
-                        if (name.equals(current)) {
-                            url = entry.getKey().toExternalForm();
-                        }
-                    }
-                }
+                url = urlByClasses.get(name);
             }
 
             if (url == null) {
@@ -5266,6 +5274,8 @@
                     } else {
                         list.add(classLocation(loadedClass).toExternalForm());
                     }
+                } else {
+                    list.add(classLocation(loadedClass).toExternalForm());
                 }
             } catch (Exception e) {
                 list.add(classLocation(loadedClass).toExternalForm());
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/AppValidator.java b/container/openejb-core/src/main/java/org/apache/openejb/config/AppValidator.java
index 2df203f..b850fbc 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/AppValidator.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/AppValidator.java
@@ -91,6 +91,8 @@
 
     // START SNIPPET : code2
     public AppModule validate(final AppModule appModule) {
+        final ClassLoader loader = Thread.currentThread().getContextClassLoader();
+        Thread.currentThread().setContextClassLoader(appModule.getClassLoader()); // be sure to not mix classloaders
         try {
             ValidationRule[] rules = getValidationRules();
             for (int i = 0; i < rules.length; i++) {
@@ -102,6 +104,8 @@
             err.setCause(e);
             err.setDetails(e.getMessage());
             appModule.getValidation().addError(err);
+        } finally {
+            Thread.currentThread().setContextClassLoader(loader);
         }
         return appModule;
     }
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java b/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
index e550659..27f478c 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
@@ -112,9 +112,6 @@
     private static Set<String> ignoredReferenceTypes = new TreeSet<String>();
     public static final String AUTOCREATE_JTA_DATASOURCE_FROM_NON_JTA_ONE_KEY = "openejb.autocreate.jta-datasource-from-non-jta-one";
 
-    public static final ThreadLocal<Collection<String>> PROVIDED_RESOURCES = new ThreadLocal<Collection<String>>();
-    public static final ThreadLocal<String> PROVIDED_RESOURCES_PREFIX = new ThreadLocal<String>();
-
     static{
         // Context objects are automatically handled
         ignoredReferenceTypes.add("javax.ejb.SessionContext");
@@ -187,25 +184,20 @@
 
         resolvePersistenceRefs(appModule);
 
-        try {
-            for (EjbModule ejbModule : appModule.getEjbModules()) {
-                deploy(ejbModule, appResources);
-            }
-            for (ClientModule clientModule : appModule.getClientModules()) {
-                deploy(clientModule, appResources);
-            }
-            for (ConnectorModule connectorModule : appModule.getConnectorModules()) {
-                deploy(connectorModule);
-            }
-            for (WebModule webModule : appModule.getWebModules()) {
-                deploy(webModule, appResources);
-            }
-            for (PersistenceModule persistenceModule : appModule.getPersistenceModules()) {
-                deploy(appModule, persistenceModule);
-            }
-        } finally {
-            PROVIDED_RESOURCES.remove();
-            PROVIDED_RESOURCES_PREFIX.remove();
+        for (EjbModule ejbModule : appModule.getEjbModules()) {
+            deploy(ejbModule, appResources);
+        }
+        for (ClientModule clientModule : appModule.getClientModules()) {
+            deploy(clientModule, appResources);
+        }
+        for (ConnectorModule connectorModule : appModule.getConnectorModules()) {
+            deploy(connectorModule);
+        }
+        for (WebModule webModule : appModule.getWebModules()) {
+            deploy(webModule, appResources);
+        }
+        for (PersistenceModule persistenceModule : appModule.getPersistenceModules()) {
+            deploy(appModule, persistenceModule);
         }
         return appModule;
     }
@@ -713,12 +705,6 @@
     }
 
     private void processJndiRefs(String moduleId, JndiConsumer jndiConsumer, AppResources appResources, ClassLoader classLoader) throws OpenEJBException {
-        final Collection<String> ignoredResources = PROVIDED_RESOURCES.get();
-        String ignoredResourcesPrefix = PROVIDED_RESOURCES_PREFIX.get();
-        if (ignoredResourcesPrefix == null) {
-            ignoredResourcesPrefix = "";
-        }
-
         // Resource reference
         for (ResourceRef ref : jndiConsumer.getResourceRef()) {
             // skip destinations with lookup name
@@ -740,21 +726,16 @@
             }
 
             String destinationId = (mappedName.length() == 0) ? ref.getName() : mappedName;
-            if (ignoredResources != null && ignoredResources.contains(destinationId)) {
-                ref.setLookupName(ignoredResourcesPrefix + destinationId);
-                ref.setName("openejb/" + moduleId + "/" + destinationId);
-            } else {
-                try {
-                    destinationId = getResourceId(moduleId, destinationId, refType, appResources);
-                } catch (OpenEJBException ex) {
-                    if (!(ref instanceof ContextRef)) {
-                        throw ex;
-                    } else { // let jaxrs provider manage it
-                        continue;
-                    }
+            try {
+                destinationId = getResourceId(moduleId, destinationId, refType, appResources);
+            } catch (OpenEJBException ex) {
+                if (!(ref instanceof ContextRef)) {
+                    throw ex;
+                } else { // let jaxrs provider manage it
+                    continue;
                 }
-                ref.setMappedName(destinationId);
             }
+            ref.setMappedName(destinationId);
         }
 
         // Resource env reference
@@ -1044,20 +1025,6 @@
         }
     }
 
-    private void set(Properties properties, String key, String value) {
-        if (value == null || value.length() == 0) return;
-        properties.put(key, value);
-    }
-
-    private void set(Properties properties, String key, int value) {
-        set(properties, key, value, 0);
-    }
-
-    private void set(Properties properties, String key, int value, int min) {
-        if (value < min) return;
-        properties.put(key, value);
-    }
-
     private String createContainer(Class<? extends ContainerInfo> containerInfoType, EjbDeployment ejbDeployment, EnterpriseBean bean) throws OpenEJBException {
         if (!autoCreateContainers) {
             throw new OpenEJBException("A container of type " + getType(bean) + " must be declared in the configuration file for bean: " + bean.getEjbName());
@@ -1085,12 +1052,6 @@
                                     EjbDeployment ejbDeployment, 
                                     AppResources appResources,
                                     EjbModule ejbModule) throws OpenEJBException {
-        final Collection<String> ignoredResources = PROVIDED_RESOURCES.get();
-        String ignoredResourcesPrefix = PROVIDED_RESOURCES_PREFIX.get();
-        if (ignoredResourcesPrefix == null) {
-            ignoredResourcesPrefix = "";
-        }
-
         // skip destinations with lookup name
         if (ref.getLookupName() != null) {
             return;
@@ -1122,17 +1083,14 @@
             ResourceLink link = ejbDeployment.getResourceLink(refName);
             if (link == null) {
                 String id = (mappedName.length() == 0) ? ref.getName() : mappedName;
-                if (ignoredResources != null && (ignoredResources.contains(id) || ignoredResources.contains(correctedId(ignoredResourcesPrefix, id)))) {
-                    final String correctedId = ignoredResourcesPrefix + correctedId(ignoredResourcesPrefix, id);
-                    ref.setLookupName(correctedId);
-                    ref.setName(correctedId);
-                    return;
-                }
-
                 if (id.startsWith("java:")) {
                     id = id.substring("java:".length());
                 }
-                id = getResourceId(ejbDeployment.getDeploymentId(), id, refType, appResources);
+                try {
+                    id = getResourceId(ejbDeployment.getDeploymentId(), id, refType, appResources);
+                } catch (OpenEJBException e) { // changing the message to be explicit
+                    throw new OpenEJBException("Can't find resource for " + ref.getOrigin() + ". (" + e.getMessage() + ")", e.getCause());
+                }
                 logger.info("Auto-linking resource-ref '" + refName + "' in bean " + ejbDeployment.getDeploymentId() + " to Resource(id=" + id + ")");
 
                 link = new ResourceLink();
@@ -1151,25 +1109,6 @@
         }
     }
 
-    private static String correctedId(final String ignoredResourcesPrefix, final String id) {
-        String newId = id;
-        String ignoredId = ignoredResourcesPrefix;
-
-        // first unify beginning of the jndi name (we can get this / after java:)
-        if (newId.startsWith("java:/")) {
-            newId = "java:" + newId.substring("java:/".length());
-        }
-        if (ignoredResourcesPrefix.startsWith("java:/")) {
-            ignoredId = "java:" + ignoredResourcesPrefix.substring("java:/".length());
-        }
-
-        // remove prefix if necessary
-        if (newId.startsWith(ignoredId)) {
-            return newId.substring(ignoredId.length());
-        }
-        return newId;
-    }
-
     private void processResourceEnvRef(JndiReference ref, 
                                        EjbDeployment ejbDeployment, 
                                        AppResources appResources, 
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/AutoDeployer.java b/container/openejb-core/src/main/java/org/apache/openejb/config/AutoDeployer.java
new file mode 100644
index 0000000..712f47c
--- /dev/null
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/AutoDeployer.java
@@ -0,0 +1,371 @@
+/*
+ * 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.openejb.config;
+
+import org.apache.openejb.assembler.classic.AppInfo;
+import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.assembler.classic.event.ContainerSystemPostCreate;
+import org.apache.openejb.assembler.classic.event.ContainerSystemPreDestroy;
+import org.apache.openejb.config.sys.Deployments;
+import org.apache.openejb.loader.FileUtils;
+import org.apache.openejb.loader.Files;
+import org.apache.openejb.loader.Options;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.observer.Observes;
+import org.apache.openejb.util.Duration;
+import org.apache.openejb.util.LogCategory;
+import org.apache.openejb.util.Logger;
+
+import java.io.File;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class AutoDeployer {
+
+    private static final Logger logger = Logger.getInstance(LogCategory.OPENEJB, AutoDeployer.class);
+
+    private final ConfigurationFactory factory;
+    private final long pollIntervalMillis;
+    private final Map<String, FileInfo> files = new HashMap<String, FileInfo>();
+    private final Timer timer;
+    private final List<Deployments> deployments = new ArrayList<Deployments>();
+
+    public AutoDeployer(final ConfigurationFactory factory, final List<Deployments> deployments) {
+        final Options options = SystemInstance.get().getOptions();
+        final Duration interval = options.get("openejb.autodeploy.interval", new Duration(2, TimeUnit.SECONDS));
+
+        if (interval.getUnit() == null) interval.setUnit(TimeUnit.SECONDS);
+
+        this.factory = factory;
+        this.deployments.addAll(deployments);
+        this.pollIntervalMillis = interval.getUnit().toMillis(interval.getTime());
+        this.timer = new Timer(this.getClass().getSimpleName());
+    }
+
+    public synchronized boolean fileAdded(final File file) {
+        logger.info("Auto-Deploying: " + file.getAbsolutePath());
+        try {
+            final AppInfo appInfo = factory.configureApplication(file);
+            appInfo.paths.add(file.getAbsolutePath());
+            appInfo.paths.add(appInfo.path);
+            for (final String path : appInfo.paths) {
+                logger.info("Auto-Deploy: Path " + path);
+            }
+            getAssembler().createApplication(appInfo);
+        } catch (Exception e) {
+            logger.error("Auto-Deploy Failed: " + file.getAbsolutePath(), e);
+        }
+        return true;
+    }
+
+    private Assembler getAssembler() {
+        return SystemInstance.get().getComponent(Assembler.class);
+    }
+
+    public synchronized boolean fileRemoved(final File file) {
+        final String path = file.getAbsolutePath();
+        final Collection<AppInfo> apps = getAssembler().getDeployedApplications();
+        for (final AppInfo app : apps) {
+            if (app.paths.contains(path)) {
+                logger.info("Auto-Undeploying: " + app.appId + " - " + file.getAbsolutePath());
+                try {
+                    getAssembler().destroyApplication(app);
+                    for (final String location : app.paths) {
+                        final File delete = new File(location);
+                        Files.remove(delete);
+                        logger.info("Auto-Undeploy: Delete " + location);
+                    }
+                } catch (Exception e) {
+                    logger.error("Auto-Undeploy Failed: " + file.getAbsolutePath(), e);
+                }
+                break;
+            }
+        }
+        return true;
+    }
+
+    public void fileUpdated(final File file) {
+        fileRemoved(file);
+        fileAdded(file);
+    }
+
+    private Logger getLogger() {
+        return logger;
+    }
+
+    @SuppressWarnings("UnusedParameters")
+    public void observe(@Observes final ContainerSystemPostCreate postCreate) {
+        start();
+    }
+
+    @SuppressWarnings("UnusedParameters")
+    public void observe(@Observes final ContainerSystemPreDestroy preDestroy) {
+        stop();
+    }
+
+    public synchronized void stop() {
+        timer.cancel();
+    }
+
+    public void start() {
+        initialize();
+
+        getLogger().debug("Scanner running.  Polling every " + pollIntervalMillis + " milliseconds.");
+
+        timer.scheduleAtFixedRate(new TimerTask() {
+            @Override
+            public void run() {
+                try {
+                    scan();
+                } catch (Exception e) {
+                    getLogger().error("Scan failed.", e);
+                }
+            }
+        }, pollIntervalMillis, pollIntervalMillis);
+
+    }
+
+    private void initialize() {
+        getLogger().debug("Doing initial scan of Deployments");
+
+        for (final File file : list()) {
+
+            if (!file.canRead()) {
+                continue;
+            }
+
+            final FileInfo now = newInfo(file);
+            now.setChanging(false);
+        }
+    }
+
+    private FileInfo newInfo(final File child) {
+        final FileInfo fileInfo = child.isDirectory() ? new DirectoryInfo(child) : new FileInfo(child);
+        files.put(fileInfo.getPath(), fileInfo);
+        return fileInfo;
+    }
+
+    /**
+     * Looks for changes to the immediate contents of the directory we're watching.
+     */
+    public void scan() {
+
+        final List<File> files = list();
+
+        final HashSet<String> missingFilesList = new HashSet<String>(this.files.keySet());
+
+        for (final File file : files) {
+
+            missingFilesList.remove(file.getAbsolutePath());
+
+            if (!file.canRead()) {
+                getLogger().debug("not readable " + file.getName());
+                continue;
+            }
+
+            final FileInfo oldStatus = oldInfo(file);
+            final FileInfo newStatus = newInfo(file);
+
+            newStatus.diff(oldStatus);
+
+            if (oldStatus == null) {
+                // Brand new, but assume it's changing and
+                // wait a bit to make sure it's not still changing
+                getLogger().debug("File Discovered: " + newStatus);
+            } else if (newStatus.isChanging()) {
+                // The two records are different -- record the latest as a file that's changing
+                // and later when it stops changing we'll do the add or update as appropriate.
+                getLogger().debug("File Changing: " + newStatus);
+            } else if (oldStatus.isNewFile()) {
+                // Used to be changing, now in (hopefully) its final state
+                getLogger().info("New File: " + newStatus);
+                newStatus.setNewFile(!fileAdded(file));
+            } else if (oldStatus.isChanging()) {
+                getLogger().info("Updated File: " + newStatus);
+                fileUpdated(file);
+
+                missingFilesList.remove(oldStatus.getPath());
+            }
+            // else it's just totally unchanged and we ignore it this pass
+        }
+
+        // Look for any files we used to know about but didn't find in this pass
+        for (final String path : missingFilesList) {
+            getLogger().info("File removed: " + path);
+
+            if (fileRemoved(new File(path))) {
+                this.files.remove(path);
+            }
+        }
+    }
+
+    private List<File> list() {
+        final List<File> files = new ArrayList<File>();
+
+        { // list all the files associated with hot deploy locations
+
+            final FileUtils base = SystemInstance.get().getBase();
+            for (final Deployments deployment : deployments) {
+                DeploymentsResolver.loadFrom(deployment, base, files);
+            }
+        }
+        return files;
+    }
+
+    private FileInfo oldInfo(final File file) {
+        return files.get(file.getAbsolutePath());
+    }
+
+    /**
+     * Provides details about a directory.
+     */
+    private static class DirectoryInfo extends FileInfo {
+        public DirectoryInfo(final File dir) {
+            //
+            // We don't pay attention to the size of the directory or files in the
+            // directory, only the highest last modified time of anything in the
+            // directory.  Hopefully this is good enough.
+            //
+            super(dir.getAbsolutePath(), 0, getLastModifiedInDir(dir));
+        }
+
+        private static long getLastModifiedInDir(final File dir) {
+            assert dir != null;
+
+            long value = dir.lastModified();
+            final File[] children = dir.listFiles();
+            long test;
+
+            if (children != null) {
+                for (final File child : children) {
+                    if (!child.canRead()) {
+                        continue;
+                    }
+
+                    if (child.isDirectory()) {
+                        test = getLastModifiedInDir(child);
+                    } else {
+                        test = child.lastModified();
+                    }
+
+                    if (test > value) {
+                        value = test;
+                    }
+                }
+            }
+
+            return value;
+        }
+    }
+
+    /**
+     * Provides details about a file.
+     */
+    private static class FileInfo implements Serializable {
+        private final String path;
+
+        private long size;
+
+        private long modified;
+
+        private boolean newFile;
+
+        private boolean changing;
+
+        public FileInfo(final File file) {
+            this(file.getAbsolutePath(), file.length(), file.lastModified());
+        }
+
+        public FileInfo(final String path, final long size, final long modified) {
+            assert path != null;
+
+            this.path = path;
+            this.size = size;
+            this.modified = modified;
+            this.newFile = true;
+            this.changing = true;
+        }
+
+        public String getPath() {
+            return path;
+        }
+
+        public long getSize() {
+            return size;
+        }
+
+        public void setSize(final long size) {
+            this.size = size;
+        }
+
+        public long getModified() {
+            return modified;
+        }
+
+        public void setModified(final long modified) {
+            this.modified = modified;
+        }
+
+        public boolean isNewFile() {
+            return newFile;
+        }
+
+        public void setNewFile(final boolean newFile) {
+            this.newFile = newFile;
+        }
+
+        public boolean isChanging() {
+            return changing;
+        }
+
+        public void setChanging(final boolean changing) {
+            this.changing = changing;
+        }
+
+        public boolean isSame(final FileInfo info) {
+            assert info != null;
+
+            if (!path.equals(info.path)) {
+                throw new IllegalArgumentException("Should only be used to compare two files representing the same path!");
+            }
+
+            return size == info.size && modified == info.modified;
+        }
+
+        public String toString() {
+            return path;
+        }
+
+        public void diff(final FileInfo old) {
+            if (old != null) {
+                this.changing = !isSame(old);
+                this.newFile = old.newFile;
+            }
+        }
+    }
+}
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigUtils.java b/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigUtils.java
index e8d52d7..f32aa75 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigUtils.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigUtils.java
@@ -167,9 +167,9 @@
         /* Check to see if the entry is already listed */
         for (Deployments d : config.getDeployments()) {
 
-            if (d.getJar() != null) {
+            if (d.getFile() != null) {
                 try {
-                    File target = SystemInstance.get().getBase().getFile(d.getJar(), false);
+                    File target = SystemInstance.get().getBase().getFile(d.getFile(), false);
 
                     /* 
                      * If the jar entry is already there, no need 
@@ -205,7 +205,7 @@
 
         /* Create a new Deployments entry */
         Deployments dep = JaxbOpenejb.createDeployments();
-        dep.setJar(jarLocation);
+        dep.setFile(jarLocation);
         config.getDeployments().add(dep);
         return true;
     }
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java b/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
index 60422c8..a6a5190 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
@@ -16,56 +16,10 @@
  */
 package org.apache.openejb.config;
 
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-import javax.ejb.embeddable.EJBContainer;
 import org.apache.openejb.OpenEJBException;
 import org.apache.openejb.Vendor;
 import org.apache.openejb.api.Proxy;
-import org.apache.openejb.assembler.classic.AppInfo;
-import org.apache.openejb.assembler.classic.Assembler;
-import org.apache.openejb.assembler.classic.BmpEntityContainerInfo;
-import org.apache.openejb.assembler.classic.ClientInfo;
-import org.apache.openejb.assembler.classic.CmpEntityContainerInfo;
-import org.apache.openejb.assembler.classic.ConnectionManagerInfo;
-import org.apache.openejb.assembler.classic.ConnectorInfo;
-import org.apache.openejb.assembler.classic.ContainerInfo;
-import org.apache.openejb.assembler.classic.ContainerSystemInfo;
-import org.apache.openejb.assembler.classic.DeploymentExceptionManager;
-import org.apache.openejb.assembler.classic.EjbJarInfo;
-import org.apache.openejb.assembler.classic.FacilitiesInfo;
-import org.apache.openejb.assembler.classic.HandlerChainInfo;
-import org.apache.openejb.assembler.classic.HandlerInfo;
-import org.apache.openejb.assembler.classic.JndiContextInfo;
-import org.apache.openejb.assembler.classic.ManagedContainerInfo;
-import org.apache.openejb.assembler.classic.MdbContainerInfo;
-import org.apache.openejb.assembler.classic.OpenEjbConfiguration;
-import org.apache.openejb.assembler.classic.OpenEjbConfigurationFactory;
-import org.apache.openejb.assembler.classic.ProxyFactoryInfo;
-import org.apache.openejb.assembler.classic.ResourceInfo;
-import org.apache.openejb.assembler.classic.SecurityServiceInfo;
-import org.apache.openejb.assembler.classic.ServiceInfo;
-import org.apache.openejb.assembler.classic.SingletonSessionContainerInfo;
-import org.apache.openejb.assembler.classic.StatefulSessionContainerInfo;
-import org.apache.openejb.assembler.classic.StatelessSessionContainerInfo;
-import org.apache.openejb.assembler.classic.TransactionServiceInfo;
-import org.apache.openejb.assembler.classic.WebAppInfo;
+import org.apache.openejb.assembler.classic.*;
 import org.apache.openejb.component.ClassLoaderEnricher;
 import org.apache.openejb.config.sys.AbstractService;
 import org.apache.openejb.config.sys.AdditionalDeployments;
@@ -109,6 +63,25 @@
 import org.apache.xbean.finder.MetaAnnotatedClass;
 import org.apache.xbean.finder.ResourceFinder;
 
+import javax.ejb.embeddable.EJBContainer;
+import java.io.File;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+
 import static org.apache.openejb.config.DeploymentsResolver.DEPLOYMENTS_CLASSPATH_PROPERTY;
 import static org.apache.openejb.config.ServiceUtils.implies;
 
@@ -136,13 +109,7 @@
     static final String OFFLINE_PROPERTY = "openejb.offline";
 
     public ConfigurationFactory() {
-        this(shouldAutoDeploy());
-    }
-
-    private static boolean shouldAutoDeploy() {
-        final Options options = SystemInstance.get().getOptions();
-        final boolean b = options.get(ConfigurationFactory.OFFLINE_PROPERTY, false);
-        return options.get("tomee.autoconfig", !b);
+        this(SystemInstance.get().getOptions().get(ConfigurationFactory.OFFLINE_PROPERTY, false));
     }
 
     public ConfigurationFactory(final boolean offline) {
@@ -471,24 +438,14 @@
         }
 
 
-        final List<String> declaredApps = getDeclaredApps();
+        final List<File> declaredApps = getDeclaredApps();
 
-        for (final String pathname : declaredApps) {
+        for (final File jarFile : declaredApps) {
             try {
-                try {
-                    final File jarFile;
-                    if (pathname.startsWith("file:/")) {
-                        jarFile = new File(new URI(pathname));
-                    } else {
-                        jarFile = new File(pathname);
-                    }
 
-                    final AppInfo appInfo = configureApplication(jarFile);
-                    sys.containerSystem.applications.add(appInfo);
+                final AppInfo appInfo = configureApplication(jarFile);
+                sys.containerSystem.applications.add(appInfo);
 
-                } catch (URISyntaxException e) {
-                    logger.error("Invalid declaredApp URI '" + pathname + "'", e);
-                }
             } catch (OpenEJBException alreadyHandled) {
                 final DeploymentExceptionManager exceptionManager = SystemInstance.get().getComponent(DeploymentExceptionManager.class);
                 exceptionManager.pushDelpoymentException(alreadyHandled);
@@ -534,6 +491,14 @@
             }
         }
 
+        for (Deployments deployments : openejb.getDeployments()) {
+            if (deployments.isAutoDeploy()) {
+                if (deployments.getDir() != null) {
+                    sys.containerSystem.autoDeploy.add(deployments.getDir());
+                }
+            }
+        }
+
         final OpenEjbConfiguration finished = sys;
         sys = null;
         openejb = null;
@@ -541,81 +506,81 @@
         return finished;
     }
 
-    private List<String> getDeclaredApps() {
+    private List<File> getDeclaredApps() {
         // make a copy of the list because we update it
         final List<Deployments> deployments = new ArrayList<Deployments>();
+
         if (openejb != null) {
             deployments.addAll(openejb.getDeployments());
         }
-        File additionalDeploymentFile;
+
         try {
-            additionalDeploymentFile = SystemInstance.get().getBase().getFile(ADDITIONAL_DEPLOYMENTS, false);
-        } catch (IOException e) {
-            additionalDeploymentFile = null;
-        }
-        if (additionalDeploymentFile.exists()) {
-            InputStream fis = null;
-            try {
-                fis = IO.read(additionalDeploymentFile);
-                final AdditionalDeployments additionalDeployments = JaxbOpenejb.unmarshal(AdditionalDeployments.class, fis);
-                deployments.addAll(additionalDeployments.getDeployments());
-            } catch (Exception e) {
-                logger.error("can't read " + ADDITIONAL_DEPLOYMENTS, e);
-            } finally {
-                IO.close(fis);
+            final File additionalDeploymentFile = SystemInstance.get().getBase().getFile(ADDITIONAL_DEPLOYMENTS, false);
+
+            if (additionalDeploymentFile.exists()) {
+                InputStream fis = null;
+                try {
+                    fis = IO.read(additionalDeploymentFile);
+                    final AdditionalDeployments additionalDeployments = JaxbOpenejb.unmarshal(AdditionalDeployments.class, fis);
+                    deployments.addAll(additionalDeployments.getDeployments());
+                } catch (Exception e) {
+                    logger.error("can't read " + ADDITIONAL_DEPLOYMENTS, e);
+                } finally {
+                    IO.close(fis);
+                }
             }
+        } catch (Exception e) {
+            logger.info("No additional deployments found: " + e);
         }
 
         // resolve jar locations //////////////////////////////////////  BEGIN  ///////
 
         final FileUtils base = SystemInstance.get().getBase();
 
-        final List<URL> declaredAppsUrls = new ArrayList<URL>();
-        try {
-            for (final Deployments deployment : deployments) {
+        final List<Deployments> autoDeploy = new ArrayList<Deployments>();
+
+        final List<File> declaredAppsUrls = new ArrayList<File>();
+
+        for (final Deployments deployment : deployments) {
+            try {
                 DeploymentsResolver.loadFrom(deployment, base, declaredAppsUrls);
+                if (deployment.isAutoDeploy()) autoDeploy.add(deployment);
+            } catch (SecurityException se) {
+                logger.warning("Security check failed on deployment: " + deployment.getFile(), se);
             }
-        } catch (SecurityException ignored) {
         }
-        return toString(declaredAppsUrls);
+
+        if (autoDeploy.size() > 0) {
+            SystemInstance.get().addObserver(new AutoDeployer(this, autoDeploy));
+        }
+
+        return declaredAppsUrls;
     }
 
-    public ArrayList<File> getModulesFromClassPath(List<String> declaredApps, final ClassLoader classLoader) {
+    public ArrayList<File> getModulesFromClassPath(List<File> declaredApps, final ClassLoader classLoader) {
         final FileUtils base = SystemInstance.get().getBase();
-        if (declaredApps == null) {
-            declaredApps = getDeclaredApps();
-        }
+
         final List<URL> classpathAppsUrls = new ArrayList<URL>();
         DeploymentsResolver.loadFromClasspath(base, classpathAppsUrls, classLoader);
 
         final ArrayList<File> jarFiles = new ArrayList<File>();
         for (final URL path : classpathAppsUrls) {
-            if (declaredApps.contains(URLs.toFilePath(path))) continue;
+            final File file = URLs.toFile(path);
 
-            jarFiles.add(new File(URLs.toFilePath(path)));
+            if (declaredApps != null && declaredApps.contains(file)) continue;
+
+            jarFiles.add(file);
         }
         return jarFiles;
     }
 
-    private List<String> toString(final List<URL> urls) {
-        final List<String> toReturn = new ArrayList<String>(urls.size());
-        for (final URL url : urls) {
-            try {
-                toReturn.add(url.toString());
-            } catch (Exception ignore) {
-            }
-        }
-        return toReturn;
-    }
-
     public ContainerInfo createContainerInfo(final Container container) throws OpenEJBException {
         final Class<? extends ContainerInfo> infoClass = getContainerInfoType(container.getType());
         if (infoClass == null) {
             throw new OpenEJBException(messages.format("unrecognizedContainerType", container.getType()));
         }
 
-        final ContainerInfo info = configureService(container, infoClass);
-        return info;
+        return configureService(container, infoClass);
     }
 
     private void loadPropertiesDeclaredConfiguration(final Openejb openejb) {
@@ -650,8 +615,7 @@
 
         final URI uri = new URI(value);
 
-        final Object service = toConfigDeclaration(name, uri);
-        return service;
+        return toConfigDeclaration(name, uri);
     }
 
     public Object toConfigDeclaration(final String id, final URI uri) throws OpenEJBException {
@@ -684,7 +648,7 @@
             } else if (object instanceof Deployments) {
                 final Deployments deployments = (Deployments) object;
                 deployments.setDir(map.remove("dir"));
-                deployments.setJar(map.remove("jar"));
+                deployments.setFile(map.remove("jar"));
                 final String cp = map.remove("classpath");
                 if (cp != null) {
                     final String[] paths = cp.split(File.pathSeparator);
@@ -707,7 +671,12 @@
 
         try {
             final AppModule appModule = deploymentLoader.load(jarFile);
-            return configureApplication(appModule);
+            final AppInfo appInfo = configureApplication(appModule);
+
+            // TODO This is temporary -- we need to do this in AppInfoBuilder
+            appInfo.paths.add(appInfo.path);
+            appInfo.paths.add(jarFile.getAbsolutePath());
+            return appInfo;
         } catch (ValidationFailedException e) {
             logger.warning("configureApplication.loadFailed", jarFile.getAbsolutePath(), e.getMessage()); // DO not include the stacktrace in the message
             throw e;
@@ -1094,8 +1063,7 @@
     }
 
     private <T extends ServiceInfo> void specialProcessing(final T info) {
-        final ServiceInfo serviceInfo = info;
-        TopicOrQueueDefaults.process(serviceInfo);
+        TopicOrQueueDefaults.process(info);
     }
 
 
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java b/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
index 35ba82f..f14de16 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
@@ -24,21 +24,8 @@
 import org.apache.openejb.config.event.BeforeDeploymentEvent;
 import org.apache.openejb.core.EmptyResourcesClassLoader;
 import org.apache.openejb.core.ParentClassLoaderFinder;
-import org.apache.openejb.jee.Application;
-import org.apache.openejb.jee.ApplicationClient;
-import org.apache.openejb.jee.Beans;
-import org.apache.openejb.jee.Connector;
-import org.apache.openejb.jee.EjbJar;
-import org.apache.openejb.jee.FacesConfig;
-import org.apache.openejb.jee.JavaWsdlMapping;
-import org.apache.openejb.jee.JaxbJavaee;
-import org.apache.openejb.jee.JspConfig;
+import org.apache.openejb.jee.*;
 import org.apache.openejb.jee.Module;
-import org.apache.openejb.jee.Taglib;
-import org.apache.openejb.jee.TldTaglib;
-import org.apache.openejb.jee.WebApp;
-import org.apache.openejb.jee.WebserviceDescription;
-import org.apache.openejb.jee.Webservices;
 import org.apache.openejb.jee.oejb3.OpenejbJar;
 import org.apache.openejb.loader.FileUtils;
 import org.apache.openejb.loader.IO;
@@ -61,6 +48,7 @@
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLClassLoader;
@@ -95,6 +83,7 @@
 public class DeploymentLoader implements DeploymentFilterable {
     public static final Logger logger = Logger.getInstance(LogCategory.OPENEJB_STARTUP_CONFIG, "org.apache.openejb.util.resources");
     public static final String OPENEJB_ALTDD_PREFIX = "openejb.altdd.prefix";
+
     private static final String ddDir = "META-INF/";
     private boolean scanManagedBeans = true;
     private static final Collection<String> KNOWN_DESCRIPTORS = Arrays.asList("app-ctx.xml", "module.properties", "application.properties", "web.xml", "ejb-jar.xml", "openejb-jar.xml", "env-entries.properties", "beans.xml", "ra.xml", "application.xml", "application-client.xml", "persistence-fragment.xml", "persistence.xml", "validation.xml", NewLoaderLogic.EXCLUSION_FILE);
@@ -118,7 +107,7 @@
 
         try {
             // determine the module type
-            Class<? extends DeploymentModule> moduleClass;
+            final Class<? extends DeploymentModule> moduleClass;
 
             try {
                 doNotUseClassLoader = ClassLoaderUtil.createClassLoader(jarPath, new URL[]{baseUrl}, getOpenEJBClassLoader());
@@ -143,7 +132,7 @@
             }
 
             if (EjbModule.class.equals(moduleClass)) {
-                final URL[] urls = new URL[] { baseUrl };
+                final URL[] urls = new URL[]{baseUrl};
 
                 SystemInstance.get().fireEvent(new BeforeDeploymentEvent(urls));
 
@@ -233,7 +222,6 @@
             // We can safely destroy this class loader in either case, as it was not use by any modules
             if (null != doNotUseClassLoader) {
                 ClassLoaderUtil.destroyClassLoader(doNotUseClassLoader);
-                doNotUseClassLoader = null;
 
                 //Really try and flush this classloader out
 //                System.gc();
@@ -245,6 +233,7 @@
         return ParentClassLoaderFinder.Helper.get();
     }
 
+    @SuppressWarnings("unchecked")
     private void addWebPersistenceDD(final String name, final Map<String, Object> otherDD, final AppModule appModule) {
         if (otherDD.containsKey(name)) {
             List<URL> persistenceUrls = (List<URL>) appModule.getAltDDs().get(name);
@@ -351,7 +340,11 @@
                             webModules.put(entry.getKey(), entry.getValue());
                         }
                     } catch (UnsupportedOperationException e) {
-                        // Ignore it as per the javaee spec EE.8.4.2 section 1.d.iiilogger.info("Ignoring unknown module type: "+entry.getKey());
+                        // Ignore it as per the javaee spec EE.8.4.2 section 1.d.iii
+                        logger.info("Ignoring unknown module type: " + entry.getKey());
+                    } catch (UnknownModuleTypeException e) {
+                        // Ignore it as per the javaee spec EE.8.4.2 section 1.d.iii
+                        logger.info("Ignoring unknown module type: " + entry.getKey());
                     } catch (Exception e) {
                         throw new OpenEJBException("Unable to determine the module type of " + entry.getKey() + ": Exception: " + e.getMessage(), e);
                     }
@@ -523,7 +516,7 @@
             DeploymentsResolver.loadFromClasspath(base, filteredUrls, appModule.getClassLoader());
             addPersistenceUnits(appModule, filteredUrls.toArray(new URL[filteredUrls.size()]));
 
-            for (DeploymentModule module : appModule.getDeploymentModule()) {
+            for (final DeploymentModule module : appModule.getDeploymentModule()) {
                 module.setStandaloneModule(false);
             }
 
@@ -633,6 +626,7 @@
         addWebModule(webModule, appModule);
     }
 
+    @SuppressWarnings("unchecked")
     public static void addWebModule(final WebModule webModule, final AppModule appModule) throws OpenEJBException {
         // create and add the WebModule
         appModule.getWebModules().add(webModule);
@@ -680,7 +674,7 @@
                     final IAnnotationFinder finder = new org.apache.xbean.finder.AnnotationFinder(new ClassesArchive());
                     webModule.setFinder(finder);
                     webEjbModule.setFinder(finder);
-                }  else {
+                } else {
                     final IAnnotationFinder finder = FinderFactory.createFinder(webModule);
                     webModule.setFinder(finder);
                     webEjbModule.setFinder(finder);
@@ -700,10 +694,10 @@
      * then per specification we use the web.xml metadata-complete setting
      * to imply the same for EJBs.
      *
-     * @param webModule
-     * @param ejbModule
+     * @param webModule WebModule
+     * @param ejbModule EjbModule
      */
-    private static void fillEjbJar(WebModule webModule, EjbModule ejbModule) {
+    private static void fillEjbJar(final WebModule webModule, final EjbModule ejbModule) {
         final Object o = webModule.getAltDDs().get("ejb-jar.xml");
         if (o != null) return;
         if (ejbModule.getEjbJar() != null) return;
@@ -716,7 +710,7 @@
         ejbModule.setEjbJar(ejbJar);
     }
 
-    private static boolean isMetadataComplete(WebModule webModule, EjbModule ejbModule) {
+    private static boolean isMetadataComplete(final WebModule webModule, final EjbModule ejbModule) {
         if (webModule.getWebApp() == null) return false;
         if (!webModule.getWebApp().isMetadataComplete()) return false;
 
@@ -724,9 +718,8 @@
         // We need to determine if there are cdi or ejb xml files
         if (webModule.getAltDDs().get("beans.xml") == null) return true;
         if (ejbModule.getEjbJar() == null) return true;
-        if (!ejbModule.getEjbJar().isMetadataComplete()) return false;
+        return ejbModule.getEjbJar().isMetadataComplete();
 
-        return true;
     }
 
     public WebModule createWebModule(final String appId, final String warPath, final ClassLoader parentClassLoader, final String contextRoot, final String moduleName) throws OpenEJBException {
@@ -789,7 +782,7 @@
         return webModule;
     }
 
-    public static List<URL> filterWebappUrls(final URL[] webUrls, URL exclusions) {
+    public static List<URL> filterWebappUrls(final URL[] webUrls, final URL exclusions) {
         Filter excludeFilter = null;
         if (exclusions != null) {
             try {
@@ -1033,7 +1026,7 @@
     /**
      * Finds all faces configuration files and stores them in the WebModule
      *
-     * @param webModule
+     * @param webModule WebModule
      * @throws OpenEJBException
      */
     private void addFacesConfigs(final WebModule webModule) throws OpenEJBException {
@@ -1245,7 +1238,7 @@
         }
     }
 
-    private static Map<String, URL> mapDescriptors(final ResourceFinder finder)
+    public static Map<String, URL> mapDescriptors(final ResourceFinder finder)
             throws IOException {
         final Map<String, URL> map = finder.getResourcesMap(ddDir);
 
@@ -1264,8 +1257,8 @@
     /**
      * Modifies the map passed in with all the alt dd URLs found
      *
-     * @param map
-     * @param log
+     * @param map Map
+     * @param log boolean
      * @return the same map instance updated with alt dds
      */
     public static Map<String, URL> altDDSources(final Map<String, URL> map, final boolean log) {
@@ -1357,11 +1350,21 @@
             // file path has trailing !/ that must be stripped off
             pathname = pathname.substring(0, pathname.lastIndexOf('!'));
 
-            pathname = URLDecoder.decode(pathname);
+            try {
+                pathname = URLDecoder.decode(pathname, "UTF-8");
+            } catch (Exception e) {
+                //noinspection deprecation
+                pathname = URLDecoder.decode(pathname);
+            }
             return new File(pathname);
         } else if ("file".equals(warUrl.getProtocol())) {
             final String pathname = warUrl.getPath();
-            return new File(URLDecoder.decode(pathname));
+            try {
+                return new File(URLDecoder.decode(pathname, "UTF-8"));
+            } catch (UnsupportedEncodingException e) {
+                //noinspection deprecation
+                return new File(URLDecoder.decode(pathname));
+            }
         } else {
             return null;
         }
@@ -1414,6 +1417,7 @@
         return discoverModuleType(baseUrl, classLoader, search);
     }
 
+    @SuppressWarnings("unchecked")
     public Class<? extends DeploymentModule> discoverModuleType(final URL baseUrl, final ClassLoader classLoader, final Set<RequireDescriptors> requireDescriptor) throws IOException, UnknownModuleTypeException {
         final boolean scanPotentialEjbModules = !requireDescriptor.contains(RequireDescriptors.EJB);
         final boolean scanPotentialClientModules = !requireDescriptor.contains(RequireDescriptors.CLIENT);
@@ -1487,6 +1491,15 @@
             return PersistenceModule.class;
         }
 
+        //#TOMEE-613
+        final File file = URLs.toFile(baseUrl);
+        if (DeploymentsResolver.isValidDirectory(file)) {
+
+            final File[] files = file.listFiles();
+            if (containsEarAssets(files)) return AppModule.class;
+            if (containsWebAssets(files)) return WebModule.class;
+        }
+
         final Class<? extends DeploymentModule> defaultType = (Class<? extends DeploymentModule>) SystemInstance.get().getOptions().get("openejb.default.deployment-module", (Class<?>) null);
         if (defaultType != null) {
             // should we do a better filtering? it seems enough for common cases.
@@ -1500,6 +1513,30 @@
         throw new UnknownModuleTypeException("Unknown module type: url=" + path); // baseUrl can be null
     }
 
+    private static boolean containsWebAssets(final File[] files) {
+        if (files != null) {
+            for (final File file : files) {
+                final String fn = file.getName().toLowerCase();
+                if (fn.endsWith(".jsp")) return true;
+                if (fn.endsWith(".html")) return true;
+            }
+        }
+        return false;
+    }
+
+    private static boolean containsEarAssets(final File[] files) {
+        if (files != null) {
+            for (final File file : files) {
+                final String fn = file.getName().toLowerCase();
+                if (fn.endsWith(".jar")) return true;
+                if (fn.endsWith(".war")) return true;
+                if (fn.endsWith(".rar")) return true;
+            }
+        }
+        return false;
+    }
+
+
     private Map<String, URL> getDescriptors(final ClassLoader classLoader, final URL pathToScanDescriptors)
             throws IOException {
         final ResourceFinder finder = new ResourceFinder("", classLoader, pathToScanDescriptors);
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentModule.java b/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentModule.java
index 0974c23..547660a 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentModule.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentModule.java
@@ -22,6 +22,7 @@
 import java.io.File;
 import java.net.URI;
 import java.util.ArrayList;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -60,10 +61,22 @@
         private final URI uri;
         private boolean overriden = false;
 
+        /**
+         * The intention of this is to hold the extracted and archived versions
+         */
+        private final Set<String> locations = new LinkedHashSet<String>();
+
         public ID(NamedModule vendorDd, NamedModule specDd, String name, File location, URI uri, DeploymentModule module) {
             this.name = name(vendorDd, specDd, uri, location, name, module);
             this.location = location(location, uri);
             this.uri = uri(uri, location, this.name);
+            if (location != null) {
+                this.locations.add(location.getAbsolutePath());
+            }
+        }
+
+        public Set<String> getLocations() {
+            return locations;
         }
 
         private URI uri(URI uri, File location, String name) {
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java b/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
index 5e26ae7..a087c17 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
@@ -17,8 +17,8 @@
 package org.apache.openejb.config;
 
 import org.apache.openejb.config.sys.Deployments;
-import org.apache.openejb.config.sys.JaxbOpenejb;
 import org.apache.openejb.loader.FileUtils;
+import org.apache.openejb.loader.Files;
 import org.apache.openejb.loader.Options;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.util.Logger;
@@ -30,152 +30,156 @@
 import org.apache.xbean.finder.filter.IncludeExcludeFilter;
 
 import java.io.File;
+import java.io.FileFilter;
 import java.io.IOException;
-import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.EnumSet;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import static org.apache.openejb.util.URLs.toFile;
+import static org.apache.openejb.util.URLs.toFileUrl;
 
 /**
  * @version $Rev$ $Date$
  */
 public class DeploymentsResolver implements DeploymentFilterable {
+
     private static final String EXCLUDE_INCLUDE_ORDER = SystemInstance.get().getOptions().get("openejb.exclude-include.order", "include-exclude");
-
+    private static final String[] ignoreDirs = SystemInstance.get().getProperty("openejb.ignore.directories", ".svn,_svn,cvs,.git,.hg").split(",");
     private static final Logger logger = DeploymentLoader.logger;
+    private static File lib = null;
 
-    public static void loadFrom(final Deployments dep, final FileUtils path, final List<URL> jarList) {
-
-        ////////////////////////////////
-        //
-        //  Expand the path of a jar
-        //
-        ////////////////////////////////
-        if (dep.getDir() == null && dep.getJar() != null) {
-            try {
-                final File jar = path.getFile(dep.getJar(), false);
-                final URL url = jar.toURI().toURL();
-                if (!jarList.contains(url)) {
-                    jarList.add(url);
-                }
-            } catch (Exception ignored) {
-            }
-            return;
-        }
-
-        File dir = null;
+    static {
         try {
-            dir = path.getFile(dep.getDir(), false);
-        } catch (Exception ignored) {
+            lib = SystemInstance.get().getHome().getDirectory("lib", false);
+        } catch (IOException e) {
+            //Ignore
+        }
+    }
+
+    protected static boolean isValidDirectory(final File file) {
+
+        if (file.isDirectory() && !file.isHidden() && !file.equals(lib)) {
+
+            final String fn = file.getName();
+
+            for (final String dir : ignoreDirs) {
+                if (fn.equalsIgnoreCase(dir)) {
+                    return false;
+                }
+            }
+
+            final String[] files = file.list();
+
+            return (null != files && files.length > 0);
         }
 
-        if (dir == null || !dir.isDirectory()) return;
+        return false;
+    }
 
-        ////////////////////////////////
-        //
-        //  Unpacked "Jar" directory with descriptor
-        //
-        ////////////////////////////////
-        final File ejbJarXml = new File(dir, "META-INF" + File.separator + "ejb-jar.xml");
-        if (ejbJarXml.exists()) {
+    public static void loadFrom(final Deployments dep, final FileUtils path, final List<File> jarList) {
+
+        if (dep.getDir() != null) {
+
             try {
-                final URL url = dir.toURI().toURL();
-                if (!jarList.contains(url)) {
-                    jarList.add(url);
-                }
-            } catch (MalformedURLException ignore) {
-            }
-            return;
-        }
 
-        final File appXml = new File(dir, "META-INF" + File.separator + "application.xml");
-        if (appXml.exists()) {
+                loadFromDir(dep, path, jarList);
+
+            } catch (Files.FileDoesNotExistException e) {
+                logger.warning("<Deployments dir=\"" + dep.getFile() + "\"> - " + e.getMessage());
+
+            } catch (RuntimeException e) {
+                final String message = "<Deployments dir=\"" + dep.getFile() + "\"> - " + e.getMessage();
+
+                logger.error(message);
+                throw new DeploymentsConfigurationException(message);
+            }
+
+        } else if (dep.getFile() != null) {
+
             try {
-                final URL url = dir.toURI().toURL();
-                if (!jarList.contains(url)) {
-                    jarList.add(url);
-                }
-            } catch (MalformedURLException ignore) {
+
+                loadFromFile(dep, path, jarList);
+
+            } catch (RuntimeException e) {
+                final String message = "<Deployments file=\"" + dep.getFile() + "\"> - " + e.getMessage();
+                logger.error(message);
+                throw new DeploymentsConfigurationException(message);
             }
-            return;
-        }
 
-        final File raXml = new File(dir, "META-INF" + File.separator + "ra.xml");
-        if (raXml.exists()) {
-            try {
-                final URL url = dir.toURI().toURL();
-                if (!jarList.contains(url)) {
-                    jarList.add(url);
+        }
+    }
+
+    public static class DeploymentsConfigurationException extends RuntimeException {
+        public DeploymentsConfigurationException(final String message) {
+            super(message);
+        }
+    }
+
+    private static void loadFromFile(final Deployments dep, final FileUtils path, final List<File> jarList) {
+        final File file = Files.path(path.getDirectory(), dep.getFile());
+
+        Files.exists(file);
+        Files.readable(file);
+        Files.file(file);
+
+        if (!jarList.contains(file)) {
+            jarList.add(file);
+        }
+    }
+
+    private static void loadFromDir(final Deployments dep, final FileUtils path, final List<File> jarList) {
+        final File dir = Files.path(path.getDirectory(), dep.getDir());
+
+        Files.exists(dir);
+        Files.readable(dir);
+        Files.dir(dir);
+        Files.notHidden(dir);
+
+        final Map<String, File> files = new LinkedHashMap<String, java.io.File>();
+        final File[] list = dir.listFiles(new FileFilter() {
+            @Override
+            public boolean accept(final File f) {
+                if (f.isDirectory()) {
+                    return DeploymentsResolver.isValidDirectory(f);
                 }
-            } catch (MalformedURLException ignore) {
+                return true;
             }
-            return;
-        }
+        });
 
-        ////////////////////////////////
-        //
-        //  Directory contains Jar files
-        //
-        ////////////////////////////////
-        boolean hasNestedArchives = false;
-        final File[] dirFiles = dir.listFiles();
+        if (list != null) {
+            for (final File file : list) {
 
-        if (null != dirFiles) {
-            for (final File file : dirFiles) {
-                try {
+                files.put(file.getAbsolutePath(), file);
+            }
 
-                    final URL url = file.toURI().toURL();
-                    if (jarList.contains(url)) continue;
-
-                    if ((file.getName().endsWith(".jar") || file.getName().endsWith(".war") || file.getName().endsWith(".rar") || file.getName().endsWith(".ear")) && !unpackExists(file)) {
-                        jarList.add(url);
-                        hasNestedArchives = true;
-                    } else if (new File(file, "META-INF").exists()) { // Unpacked ear or jar
-                        jarList.add(url);
-                        hasNestedArchives = true;
-                    } else if (new File(file, "WEB-INF").exists()) {  // Unpacked webapp
-                        jarList.add(url);
-                        hasNestedArchives = true;
-                    }
-                } catch (Exception e) {
-                    logger.debug("loadFrom", e);
-                }
+            // Ignore any unpacked versions
+            for (final File file : list) {
+                if (!isArchive(file)) continue;
+                final String archive = file.getAbsolutePath();
+                files.remove(archive.substring(0, archive.length() - 4));
             }
         }
 
-        ////////////////////////////////
-        //
-        //  Unpacked "Jar" directory w/o descriptor
-        //
-        ////////////////////////////////
-        if (!hasNestedArchives) {
-            final HashMap<String, URL> files = new HashMap<String, URL>();
-            DeploymentLoader.scanDir(dir, files, "");
-            for (final String fileName : files.keySet()) {
-                if (fileName.endsWith(".class")) {
-                    try {
-                        final URL url = dir.toURI().toURL();
-                        if (!jarList.contains(url)) {
-                            jarList.add(url);
-                        }
-                    } catch (MalformedURLException ignore) {
-                    }
-                    return;
-                }
+        for (final File file : files.values()) {
+            if (!jarList.contains(file)) {
+                jarList.add(file);
             }
         }
     }
 
-    private static boolean unpackExists(final File file) {
+    private static boolean isArchive(final File file) {
+        if (!file.isFile()) return false;
+        if (!file.getName().toLowerCase().endsWith("ar")) return false;
+
         final String name = file.getName();
-        return !(!name.endsWith("ar") || name.length() < 5)
-                && new File(file.getParentFile(), name.substring(0, name.length()  -".war".length())).exists();
+        final char c = name.charAt(name.length() - 4);
+        return c == '.';
     }
 
     /**
@@ -322,100 +326,8 @@
 
     }
 
-    /**
-     * The regular expressions involved in filtering can be costly
-     * In the normal case we will not scan anyway, so if not
-     * no point in optimizing the list of urls in the classpath
-     *
-     * @param include
-     * @param exclude
-     * @param requireDescriptors
-     * @return
-     */
-    private static boolean shouldFilter(final String include, final String exclude, final Set<RequireDescriptors> requireDescriptors) {
-        final boolean includeNothing = include.equals("");
-        final boolean excludeEverything = exclude.equals(".*");
-
-        //  If we are going to eliminate the entire classpath from
-        //  scanning anyway, no sense in taking the time to do it
-        //  bit by bit.  Return false
-        if (includeNothing && excludeEverything) return false;
-
-        //  If we are forcably requiring descriptors for all possible file types
-        //  then there is also no scanning and no point in filtering the
-        //  classpath down bit by bit.  Return false
-        return requireDescriptors.size() != RequireDescriptors.values().length;
-    }
-
-    private static UrlSet applyBuiltinExcludes(UrlSet urlSet) throws MalformedURLException {
-
-        urlSet = urlSet.exclude(".*/activation(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/activeio-core(-[\\d.]+)?(-incubator)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/activemq-(core|ra)(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/annotations-api-6.[01].[\\d.]+.jar(!/)?");
-        urlSet = urlSet.exclude(".*/asm-(all|commons|util|tree)?[\\d.]+.jar(!/)?");
-        urlSet = urlSet.exclude(".*/avalon-framework(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/axis2-jaxws-api(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/backport-util-concurrent(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/bcprov-jdk15(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/catalina(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/cglib-(nodep-)?[\\d.]+.jar(!/)?");
-        urlSet = urlSet.exclude(".*/com\\.ibm\\.ws\\.[^/]*.jar(!/)?");
-        urlSet = urlSet.exclude(".*/commons-(logging|logging-api|cli|pool|lang|collections|dbcp|dbcp-all)(-[\\d.r-]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/cxf-bundle(-[\\d.]+)?(incubator)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/openejb-cxf-bundle(-[\\d.]+)?(incubator)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/derby(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/ejb31-api-experimental(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/geronimo-(connector|transaction)(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/geronimo-[^/]+_spec(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/geronimo-javamail_([\\d.]+)_mail(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/hibernate-(entitymanager|annotations)?(-[\\d.]+(ga)?)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/howl(-[\\d.-]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/hsqldb(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/idb(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/idea_rt.jar(!/)?");
-        urlSet = urlSet.exclude(".*/javaee-api(-embedded)?-[\\d.-]+.jar(!/)?");
-        urlSet = urlSet.exclude(".*/javassist[^/]*.jar(!/)?");
-        urlSet = urlSet.exclude(".*/jaxb-(impl|api)(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/jboss-[^/]*.jar(!/)?");
-        urlSet = urlSet.exclude(".*/jbossall-[^/]*.jar(!/)?");
-        urlSet = urlSet.exclude(".*/jbosscx-[^/]*.jar(!/)?");
-        urlSet = urlSet.exclude(".*/jbossjts-?[^/]*.jar(!/)?");
-        urlSet = urlSet.exclude(".*/jbosssx-[^/]*.jar(!/)?");
-        urlSet = urlSet.exclude(".*/jmdns(-[\\d.]+)?(-RC\\d)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/juli(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/junit(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/log4j(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/logkit(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/mail(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/neethi(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/org\\.eclipse\\.persistence\\.[^/]*.jar(!/)?");
-        urlSet = urlSet.exclude(".*/org\\.junit_.[^/]*.jar(!/)?");
-        urlSet = urlSet.exclude(".*/openjpa-(jdbc|kernel|lib|persistence|persistence-jdbc)(-5)?(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/openjpa(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/opensaml(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/quartz(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/saaj-impl(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/serp(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/servlet-api(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/slf4j-api(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/slf4j-jdk14(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/stax-api(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/swizzle-stream(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/sxc-(jaxb|runtime)(-[\\d.]+)?(-SNAPSHOT)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/wsdl4j(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/wss4j(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/wstx-asl(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/xbean-(reflect|naming|finder)-(shaded-)?[\\d.]+.jar(!/)?");
-        urlSet = urlSet.exclude(".*/xmlParserAPIs(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/xmlunit(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/xmlsec(-[\\d.]+)?.jar(!/)?");
-        urlSet = urlSet.exclude(".*/XmlSchema(-[\\d.]+)?.jar(!/)?");
-        return urlSet;
-    }
-
     public static void processUrls(final List<URL> urls, final ClassLoader classLoader, final Set<RequireDescriptors> requireDescriptors, final FileUtils base, final List<URL> jarList) {
-        for (URL url : urls) {
+        for (final URL url : urls) {
 
             final String urlProtocol = url.getProtocol();
             //Currently, we only support jar and file protocol
@@ -425,8 +337,6 @@
                 continue;
             }
 
-            final Deployments deployment;
-            String path = "";
             try {
 
                 final DeploymentLoader deploymentLoader = new DeploymentLoader();
@@ -434,30 +344,13 @@
                 final Class<? extends DeploymentModule> moduleType = deploymentLoader.discoverModuleType(url, classLoader, requireDescriptors);
                 if (AppModule.class.isAssignableFrom(moduleType) || EjbModule.class.isAssignableFrom(moduleType) || PersistenceModule.class.isAssignableFrom(moduleType) || ConnectorModule.class.isAssignableFrom(moduleType) || ClientModule.class.isAssignableFrom(moduleType)) {
 
-                    if (AppModule.class.isAssignableFrom(moduleType) || ConnectorModule.class.isAssignableFrom(moduleType)) {
+                    final URL archive = toFileUrl(url);
 
-                        deployment = JaxbOpenejb.createDeployments();
-
-                        if (urlProtocol.equals("jar")) {
-                            url = new URL(url.getFile().replaceFirst("!.*$", ""));
-                            final File file = toFile(url);
-                            path = file.getAbsolutePath();
-                            deployment.setJar(path);
-                        } else if (urlProtocol.equals("file")) {
-                            final File file = toFile(url);
-                            path = file.getAbsolutePath();
-                            deployment.setDir(path);
-                        }
-
-                        logger.info("Found " + moduleType.getSimpleName() + " in classpath: " + path);
-
-                        loadFrom(deployment, base, jarList);
-                    } else {
-                        if (!jarList.contains(url)) {
-                            jarList.add(url);
-                        }
+                    if (!jarList.contains(archive)) {
+                        jarList.add(archive);
+                        final File file = toFile(archive);
+                        logger.info("Found " + moduleType.getSimpleName() + " in classpath: " + file.getAbsolutePath());
                     }
-
                 }
             } catch (IOException e) {
                 logger.warning("Unable to determine the module type of " + url.toExternalForm() + ": Exception: " + e.getMessage(), e);
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/JPAPropertyConverter.java b/container/openejb-core/src/main/java/org/apache/openejb/config/JPAPropertyConverter.java
index af73d34..c63d3ad 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/JPAPropertyConverter.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/JPAPropertyConverter.java
@@ -42,7 +42,8 @@
             return value;
         }
 
-        @Override public String toString() {
+        @Override
+        public String toString() {
             return key + '=' + value;
         }
     }
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java b/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java
index 68ab02c..1a3cfae 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java
@@ -26,6 +26,7 @@
 import org.apache.openejb.jee.PersistenceContextType;
 import org.apache.openejb.jee.ResourceEnvRef;
 import org.apache.openejb.jee.ResourceRef;
+import org.apache.openejb.jee.SessionBean;
 import org.apache.openejb.jee.TransactionType;
 
 import javax.ejb.EJBContext;
@@ -84,34 +85,38 @@
             mergeUserTransaction(webApp.getResourceEnvRefMap(), bean.getResourceEnvRefMap(), bean);
         }
 
+        final SessionBean aggregator = new SessionBean(); // easy way to get a JndiConsumer
+
         for (EnterpriseBean a : ejbJar.getEnterpriseBeans()) {
+            aggregator.getEnvEntryMap().putAll(a.getEnvEntryMap());
+            aggregator.getEjbRefMap().putAll(a.getEjbRefMap());
+            aggregator.getEjbLocalRefMap().putAll(a.getEjbLocalRefMap());
+            aggregator.getServiceRefMap().putAll(a.getServiceRefMap());
+            aggregator.getResourceRefMap().putAll(a.getResourceRefMap());
+            aggregator.getResourceEnvRefMap().putAll(a.getResourceEnvRefMap());
+            aggregator.getMessageDestinationRefMap().putAll(a.getMessageDestinationRefMap());
+            aggregator.getPersistenceContextRefMap().putAll(a.getPersistenceContextRefMap());
+            aggregator.getPersistenceUnitRefMap().putAll(a.getPersistenceUnitRefMap());
+        }
 
-            // Merge the bean namespaces together too
-            for (EnterpriseBean b : ejbJar.getEnterpriseBeans()) {
-                if (a == b) continue;
+        for (EnterpriseBean a : ejbJar.getEnterpriseBeans()) {
+            merge(a.getEnvEntryMap(), aggregator.getEnvEntryMap());
+            merge(a.getEjbRefMap(), aggregator.getEjbRefMap());
+            merge(a.getEjbLocalRefMap(), aggregator.getEjbLocalRefMap());
+            merge(a.getServiceRefMap(), aggregator.getServiceRefMap());
+            merge(a.getResourceRefMap(), aggregator.getResourceRefMap());
+            merge(a.getResourceEnvRefMap(), aggregator.getResourceEnvRefMap());
+            merge(a.getMessageDestinationRefMap(), aggregator.getMessageDestinationRefMap());
+            merge(a.getPersistenceContextRefMap(), aggregator.getPersistenceContextRefMap());
+            merge(a.getPersistenceUnitRefMap(), aggregator.getPersistenceUnitRefMap());
 
-                merge(a.getEnvEntryMap(), b.getEnvEntryMap());
-                merge(a.getEjbRefMap(), b.getEjbRefMap());
-                merge(a.getEjbLocalRefMap(), b.getEjbLocalRefMap());
-                merge(a.getServiceRefMap(), b.getServiceRefMap());
-                merge(a.getResourceRefMap(), b.getResourceRefMap());
-                merge(a.getResourceEnvRefMap(), b.getResourceEnvRefMap());
-                merge(a.getMessageDestinationRefMap(), b.getMessageDestinationRefMap());
-                merge(a.getPersistenceContextRefMap(), b.getPersistenceContextRefMap());
-                merge(a.getPersistenceUnitRefMap(), b.getPersistenceUnitRefMap());
-
-                mergeUserTransaction(a.getResourceRefMap(), b.getResourceRefMap(), b);
-                mergeUserTransaction(a.getResourceEnvRefMap(), b.getResourceEnvRefMap(), b);
-            }
+            mergeUserTransaction(aggregator.getResourceRefMap(), a.getResourceRefMap(), a);
+            mergeUserTransaction(aggregator.getResourceEnvRefMap(), a.getResourceEnvRefMap(), a);
         }
     }
 
     /**
      * Bidirectional a-b merge
-     *
-     * @param a
-     * @param b
-     * @param <R>
      */
     private <R extends JndiReference> void merge(Map<String, R> a, Map<String, R> b) {
         copy(a, b);
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java b/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
index 6e1148d..536efb4 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
@@ -36,6 +36,7 @@
 /**
  * @version $Rev$ $Date$
  */
+@SuppressWarnings("UseOfSystemOutOrSystemErr")
 public class RemoteServer {
     private static final Options options = new Options(System.getProperties());
     public static final String SERVER_DEBUG_PORT = "server.debug.port";
@@ -68,7 +69,7 @@
         this(options.get("connect.tries", 60), options.get("verbose", false));
     }
 
-    public RemoteServer(int tries, boolean verbose) {
+    public RemoteServer(final int tries, final boolean verbose) {
         this.tries = tries;
         this.verbose = verbose;
         home = getHome();
@@ -79,7 +80,7 @@
         host = options.get(SERVER_SHUTDOWN_HOST, "localhost");
     }
 
-    public void init(Properties props) {
+    public void init(final Properties props) {
         properties = props;
 
         props.put("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory");
@@ -88,12 +89,12 @@
         props.put("java.naming.security.credentials", "testpassword");
     }
 
-    public static void main(String[] args) {
+    public static void main(final String[] args) {
         assert args.length > 0 : "no arguments supplied: valid argumen -efts are 'start' or 'stop'";
         if (args[0].equalsIgnoreCase("start")){
             new RemoteServer().start();
         } else if (args[0].equalsIgnoreCase("stop")) {
-            RemoteServer remoteServer = new RemoteServer();
+            final RemoteServer remoteServer = new RemoteServer();
             remoteServer.serverHasAlreadyBeenStarted = false;
             remoteServer.stop();
         } else {
@@ -112,11 +113,11 @@
         start(Collections.EMPTY_LIST, "start", true);
     }
 
-    public void start(final List<String> additionalArgs, final String cmd, boolean checkPortAvailable) {
+    public void start(final List<String> additionalArgs, final String cmd, final boolean checkPortAvailable) {
         cmd(additionalArgs, cmd, checkPortAvailable);
     }
 
-    private void cmd(final List<String> additionalArgs, final String cmd, boolean checkPortAvailable) {
+    private void cmd(final List<String> additionalArgs, final String cmd, final boolean checkPortAvailable) {
         boolean ok = true;
         if (checkPortAvailable) {
             ok = !connect();
@@ -127,11 +128,11 @@
                     System.out.println("[] " + cmd.toUpperCase() + " SERVER");
                 }
 
-                File home = getHome();
-                String javaVersion = System.getProperty("java.version");
+                final File home = getHome();
+                final String javaVersion = System.getProperty("java.version");
                 if (verbose) {
                     System.out.println("OPENEJB_HOME = "+ home.getAbsolutePath());
-                    String systemInfo = "Java " + javaVersion + "; " + System.getProperty("os.name") + "/" + System.getProperty("os.version");
+                    final String systemInfo = "Java " + javaVersion + "; " + System.getProperty("os.name") + "/" + System.getProperty("os.version");
                     System.out.println("SYSTEM_INFO  = "+systemInfo);
                 }
 
@@ -156,7 +157,7 @@
 
                 //DMB: If you don't use an array, you get problems with jar paths containing spaces
                 // the command won't parse correctly
-                String[] args;
+                final String[] args;
                 final int debugPort = options.get(SERVER_DEBUG_PORT, 5005);
                 if (!tomcat) {
                     if (debug) {
@@ -179,23 +180,23 @@
                         };
                     }
                 } else {
-                    File bin = new File(home, "bin");
-                    File tlib = new File(home, "lib");
-                    File bootstrapJar = new File(bin, "bootstrap.jar");
-                    File juliJar = new File(bin, "tomcat-juli.jar");
-                    File commonsLoggingJar = new File(bin, "commons-logging-api.jar");
+                    final File bin = new File(home, "bin");
+                    final File tlib = new File(home, "lib");
+                    final File bootstrapJar = new File(bin, "bootstrap.jar");
+                    final File juliJar = new File(bin, "tomcat-juli.jar");
+                    final File commonsLoggingJar = new File(bin, "commons-logging-api.jar");
 
-                    File conf = new File(home, "conf");
-                    File loggingProperties = new File(conf, "logging.properties");
+                    final File conf = new File(home, "conf");
+                    final File loggingProperties = new File(conf, "logging.properties");
 
 
                     File endorsed = new File(home, "endorsed");
                     if (javaVersion != null && javaVersion.startsWith("1.7.")) { // java 7
                         endorsed = new File(home, "endorsed7"); // doesn't exist but just to ignore it with j7
                     }
-                    File temp = new File(home, "temp");
+                    final File temp = new File(home, "temp");
 
-                    List<String> argsList = new ArrayList<String>() {};
+                    final List<String> argsList = new ArrayList<String>() {};
                     argsList.add(java);
                     argsList.add("-XX:+HeapDumpOnOutOfMemoryError");
 
@@ -215,15 +216,15 @@
 
                     if (javaOpts != null) {
                         final String[] strings = javaOpts.split(" +");
-                        for (String string : strings) {
+                        for (final String string : strings) {
                             argsList.add(string);
                         }
                     }
 
                     final Map<String, String> addedArgs = new HashMap<String, String>();
                     if (additionalArgs != null) {
-                        for (String arg : additionalArgs) {
-                            String[] values = arg.split("=");
+                        for (final String arg : additionalArgs) {
+                            final String[] values = arg.split("=");
                             if (values.length == 1) {
                                 addedArgs.put(values[0], "null");
                             } else {
@@ -274,7 +275,7 @@
 
                     argsList.add("-ea");
                     argsList.add("-classpath");
-                    String ps = File.pathSeparator;
+                    final String ps = File.pathSeparator;
                     final StringBuilder cp = new StringBuilder(bootstrapJar.getAbsolutePath()).append(ps).append(juliJar.getAbsolutePath());
                     if (commonsLoggingJar.exists()) {
                         cp.append(ps).append(commonsLoggingJar.getAbsolutePath());
@@ -327,7 +328,7 @@
 
     // debugging method (mainly for buildbot), don't let it activated when all is fine
     private void kill3UNIXDebug() {
-        Thread t = new Thread() {
+        final Thread t = new Thread() {
             @Override
             public void run() {
                 setName("[DEBUG] Dump Observer");
@@ -368,18 +369,18 @@
         try {
             final Field f = server.getClass().getDeclaredField("pid");
             f.setAccessible(true);
-            int pid = (Integer) f.get(server);
+            final int pid = (Integer) f.get(server);
             Pipe.pipe(Runtime.getRuntime().exec("kill -3 " + pid));
         } catch (Exception e1) {
             e1.printStackTrace();
         }
     }
 
-    private File lib(String name, File... dirs) {
-        for (File dir : dirs) {
+    private File lib(final String name, final File... dirs) {
+        for (final File dir : dirs) {
             final File[] files = dir.listFiles();
             if (files != null) {
-                for (File file : files) {
+                for (final File file : files) {
                     if (!file.isFile()) continue;
                     if (!file.getName().endsWith(".jar")) continue;
                     if (file.getName().startsWith(name)) return file;
@@ -387,7 +388,7 @@
             }
         }
 
-        for (File dir : dirs) {
+        for (final File dir : dirs) {
             dumpLibs(dir);
         }
         throw new IllegalStateException("Cannot find the " + name + " jar");
@@ -401,7 +402,7 @@
         }
         final File[] files = dir.listFiles();
         if (files != null) {
-            for (File lib : files) {
+            for (final File lib : files) {
                 System.out.println(lib.getAbsolutePath());
             }
         }
@@ -411,7 +412,7 @@
         return server;
     }
 
-    private void addIfSet(List<String> argsList, String key) {
+    private void addIfSet(final List<String> argsList, final String key) {
         if (System.getProperties().containsKey(key)) {
             argsList.add("-D" + key + "=" + System.getProperty(key));
         }
@@ -422,7 +423,7 @@
             return home;
         }
 
-        String openejbHome = System.getProperty("openejb.home");
+        final String openejbHome = System.getProperty("openejb.home");
 
         if (openejbHome != null) {
             home = new File(openejbHome);
@@ -465,12 +466,12 @@
     }
 
     private void forceShutdown() throws Exception {
-        String fcommand = command + Character.toString((char) 0); // SHUTDOWN + EOF
+        final String fcommand = command + Character.toString((char) 0); // SHUTDOWN + EOF
 
         Socket socket = null;
         try {
             socket= new Socket(host, shutdownPort);
-            OutputStream out = socket.getOutputStream();
+            final OutputStream out = socket.getOutputStream();
             out.write(fcommand.getBytes());
             out.flush();
         } finally {
@@ -544,7 +545,7 @@
         Runtime.getRuntime().addShutdownHook(new Thread() {
             @Override
             public void run() {
-                for (Process server : kill) {
+                for (final Process server : kill) {
                     try {
                         if (server != null) {
                             server.destroy();
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java b/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java
index ce8320c..ec41f03 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java
@@ -16,6 +16,13 @@
  */
 package org.apache.openejb.config;
 
+import org.apache.openejb.jee.FacesConfig;
+import org.apache.openejb.jee.TldTaglib;
+import org.apache.openejb.jee.WebApp;
+import org.apache.openejb.jee.Webservices;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.xbean.finder.IAnnotationFinder;
+
 import java.io.File;
 import java.net.URI;
 import java.net.URL;
@@ -26,12 +33,6 @@
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
-import org.apache.openejb.jee.FacesConfig;
-import org.apache.openejb.jee.TldTaglib;
-import org.apache.openejb.jee.WebApp;
-import org.apache.openejb.jee.Webservices;
-import org.apache.openejb.loader.SystemInstance;
-import org.apache.xbean.finder.IAnnotationFinder;
 
 /**
  * @version $Rev$ $Date$
@@ -57,7 +58,7 @@
     private final Map<String, Set<String>> webAnnotatedClasses = new HashMap<String, Set<String>>();
 
     private ID id;
-    
+
     // keep the list of filtered URL we got after applying include/exclude pattern (@See DeploymentsResolver.loadFromClasspath)
     private List<URL> urls;
     private List<URL> scannableUrls;
@@ -166,9 +167,10 @@
     public Set<String> getWatchedResources() {
         return watchedResources;
     }
+
     public List<FacesConfig> getFacesConfigs() {
-		return facesConfigs;
-	}
+        return facesConfigs;
+    }
 
     @Override
     public String toString() {
@@ -178,7 +180,8 @@
                 '}';
     }
 
-    @Override public Set<String> getRestClasses() {
+    @Override
+    public Set<String> getRestClasses() {
         return restClasses;
     }
 
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckClassLoading.java b/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckClassLoading.java
index 900d6c0..417b10f 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckClassLoading.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckClassLoading.java
@@ -47,7 +47,8 @@
 
     protected AppModule appModule;
 
-    @Override public void validate(AppModule appModule) {
+    @Override
+    public void validate(AppModule appModule) {
         this.appModule = appModule;
         module = appModule;
         check(appModule.getClassLoader());
@@ -86,16 +87,18 @@
         check(webModule.getClassLoader());
     }
 
-    @Override public void validate(ClientModule clientModule) {
+    @Override
+    public void validate(ClientModule clientModule) {
         check(clientModule.getClassLoader());
     }
 
-    @Override public void validate(EjbModule ejbModule) {
+    @Override
+    public void validate(EjbModule ejbModule) {
         check(ejbModule.getClassLoader());
     }
 
     public static class Classes {
-        private static final String[] CLASS_EXTENSION = new String[] { ".class" };
+        private static final String[] CLASS_EXTENSION = new String[]{".class"};
 
         private final Map<String, Collection<String>> fileByArchive = new TreeMap<String, Collection<String>>();
 
@@ -208,7 +211,7 @@
             final String str = "both files " + file1 + '\''
                     + " and " + file2 + '\'';
             if (SystemInstance.get().getOptions().get(OPENEJB_CHECK_CLASSLOADER_VERBOSE, false)) {
-                    return str + " contains files=" + files;
+                return str + " contains files=" + files;
             }
             return str;
         }
@@ -219,7 +222,8 @@
             super(inter, dir1, dir2);
         }
 
-        @Override public String toScreen() {
+        @Override
+        public String toScreen() {
             return getFile1() + " contains " + getFile2();
         }
     }
@@ -229,7 +233,8 @@
             super(files, file1, file2);
         }
 
-        @Override public String toScreen() {
+        @Override
+        public String toScreen() {
             return getFile1() + " is included inside " + getFile2();
         }
     }
@@ -239,7 +244,8 @@
             super(files, file1, file2);
         }
 
-        @Override public String toScreen() {
+        @Override
+        public String toScreen() {
             return getFile1() + " is the same than " + getFile2();
         }
     }
@@ -247,6 +253,7 @@
     public static class DiffItemComparator implements Comparator<DiffItem> {
         private static final DiffItemComparator INSTANCE = new DiffItemComparator();
         private static final Map<Class<?>, Integer> ORDER = new HashMap<Class<?>, Integer>();
+
         static {
             ORDER.put(SameItem.class, 0);
             ORDER.put(IncludedItem.class, 1);
@@ -259,7 +266,8 @@
             return INSTANCE;
         }
 
-        @Override public int compare(DiffItem o1, DiffItem o2) {
+        @Override
+        public int compare(DiffItem o1, DiffItem o2) {
             int index1 = ORDER.get(o1.getClass());
             int index2 = ORDER.get(o2.getClass());
             if (index1 == index2) {
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckRestMethodArePublic.java b/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckRestMethodArePublic.java
index 60f56b0..96692c5 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckRestMethodArePublic.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckRestMethodArePublic.java
@@ -37,59 +37,69 @@
     public void validate(final AppModule appModule) {
         // valid standalone classes
         final Collection<String> standAloneClasses = new ArrayList<String>();
-        for (EjbModule ejb : appModule.getEjbModules()) {
-            for (EnterpriseBean bean : ejb.getEjbJar().getEnterpriseBeans()) {
-                if (bean instanceof SessionBean && ((SessionBean) bean).isRestService()) {
-                    standAloneClasses.add(bean.getEjbClass());
-                    valid(ejb.getValidation(), ejb.getClassLoader(), bean.getEjbClass());
-                }
-            }
-        }
 
-        for (WebModule web : appModule.getWebModules()) {
-            // build the list of classes to validate
-            final Collection<String> classes = new ArrayList<String>();
-            classes.addAll(web.getRestClasses());
-            classes.addAll(web.getEjbRestServices());
+        final ClassLoader loader = Thread.currentThread().getContextClassLoader();
+        try {
+            for (EjbModule ejb : appModule.getEjbModules()) {
+                Thread.currentThread().setContextClassLoader(ejb.getClassLoader());
 
-            for (String app : web.getRestApplications()) {
-                Class<?> clazz;
-                try {
-                    clazz = web.getClassLoader().loadClass(app);
-                } catch (ClassNotFoundException e) {
-                    continue; // managed elsewhere, here we just check methods
-                }
-
-                final Application appInstance;
-                try {
-                    appInstance = (Application) clazz.newInstance();
-                } catch (Exception e) {
-                    continue; // managed elsewhere
-                }
-
-                for (Class<?> rsClass : appInstance.getClasses()) {
-                    classes.add(rsClass.getName());
-                }
-                for (Object rsSingleton : appInstance.getSingletons()) {
-                    classes.add(rsSingleton.getClass().getName());
+                for (EnterpriseBean bean : ejb.getEjbJar().getEnterpriseBeans()) {
+                    if (bean instanceof SessionBean && ((SessionBean) bean).isRestService()) {
+                        standAloneClasses.add(bean.getEjbClass());
+                        valid(ejb.getValidation(), ejb.getClassLoader(), bean.getEjbClass());
+                    }
                 }
             }
 
-            // try to avoid to valid twice the same classes
-            final Iterator<String> it = classes.iterator();
-            while (it.hasNext()) {
-                final String current = it.next();
-                if (standAloneClasses.contains(current)) {
-                    it.remove();
+            for (WebModule web : appModule.getWebModules()) {
+                Thread.currentThread().setContextClassLoader(web.getClassLoader());
+
+                // build the list of classes to validate
+                final Collection<String> classes = new ArrayList<String>();
+                classes.addAll(web.getRestClasses());
+                classes.addAll(web.getEjbRestServices());
+
+                for (String app : web.getRestApplications()) {
+                    Class<?> clazz;
+                    try {
+                        clazz = web.getClassLoader().loadClass(app);
+                    } catch (ClassNotFoundException e) {
+                        continue; // managed elsewhere, here we just check methods
+                    }
+
+                    final Application appInstance;
+                    try {
+                        appInstance = (Application) clazz.newInstance();
+                    } catch (Exception e) {
+                        continue; // managed elsewhere
+                    }
+
+                    for (Class<?> rsClass : appInstance.getClasses()) {
+                        classes.add(rsClass.getName());
+                    }
+                    for (Object rsSingleton : appInstance.getSingletons()) {
+                        classes.add(rsSingleton.getClass().getName());
+                    }
                 }
-            }
 
-            // valid
-            for (String classname : classes) {
-                valid(web.getValidation(), web.getClassLoader(), classname);
-            }
+                // try to avoid to valid twice the same classes
+                final Iterator<String> it = classes.iterator();
+                while (it.hasNext()) {
+                    final String current = it.next();
+                    if (standAloneClasses.contains(current)) {
+                        it.remove();
+                    }
+                }
 
-            classes.clear();
+                // valid
+                for (String classname : classes) {
+                    valid(web.getValidation(), web.getClassLoader(), classname);
+                }
+
+                classes.clear();
+            }
+        } finally {
+            Thread.currentThread().setContextClassLoader(loader);
         }
 
         standAloneClasses.clear();
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/rules/ValidationBase.java b/container/openejb-core/src/main/java/org/apache/openejb/config/rules/ValidationBase.java
index d3ac034..96d69be 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/rules/ValidationBase.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/rules/ValidationBase.java
@@ -40,13 +40,22 @@
     DeploymentModule module;
 
     public void validate(AppModule appModule) {
-        for (EjbModule ejbModule : appModule.getEjbModules()) {
-            module = ejbModule;
-            validate(ejbModule);
-        }
-        for (ClientModule clientModule : appModule.getClientModules()) {
-            module = clientModule;
-            validate(clientModule);
+        final ClassLoader loader = Thread.currentThread().getContextClassLoader();
+        try {
+            for (EjbModule ejbModule : appModule.getEjbModules()) {
+                Thread.currentThread().setContextClassLoader(ejbModule.getClassLoader());
+
+                module = ejbModule;
+                validate(ejbModule);
+            }
+            for (ClientModule clientModule : appModule.getClientModules()) {
+                Thread.currentThread().setContextClassLoader(clientModule.getClassLoader());
+
+                module = clientModule;
+                validate(clientModule);
+            }
+        } finally {
+            Thread.currentThread().setContextClassLoader(loader);
         }
     }
 
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Deployments.java b/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Deployments.java
index 46ae06e..3674be4 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Deployments.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Deployments.java
@@ -48,10 +48,21 @@
     @XmlAttribute
     protected String dir;
     @XmlAttribute
-    protected String jar;
+    protected String file;
+    @XmlAttribute
+    protected boolean autoDeploy;
+
     @XmlTransient
     protected ClassLoader classpath;
 
+    public boolean isAutoDeploy() {
+        return autoDeploy;
+    }
+
+    public void setAutoDeploy(boolean autoDeploy) {
+        this.autoDeploy = autoDeploy;
+    }
+
     /**
      * Gets the value of the dir property.
      *
@@ -72,14 +83,20 @@
         this.dir = value;
     }
 
+
+    public Deployments dir(String name) {
+        setDir(name);
+        return this;
+    }
+
     /**
      * Gets the value of the jar property.
      *
      * @return possible object is
      *         {@link String }
      */
-    public String getJar() {
-        return jar;
+    public String getFile() {
+        return file;
     }
 
     /**
@@ -88,8 +105,13 @@
      * @param value allowed object is
      *              {@link String }
      */
-    public void setJar(String value) {
-        this.jar = value;
+    public void setFile(String value) {
+        this.file = value;
+    }
+
+    public Deployments file(String name) {
+        setFile(name);
+        return this;
     }
 
 
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SaxOpenejb.java b/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SaxOpenejb.java
index fc46b1d..8a2311c 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SaxOpenejb.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SaxOpenejb.java
@@ -17,7 +17,6 @@
 package org.apache.openejb.config.sys;
 
 import org.apache.openejb.loader.SystemInstance;
-import org.apache.openejb.util.Join;
 import org.apache.openejb.util.Saxs;
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
@@ -33,7 +32,6 @@
 import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -98,8 +96,10 @@
         @Override
         public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
             deployments.setDir(attributes.getValue("dir"));
-            deployments.setJar(attributes.getValue("jar"));
-            checkAttributes(attributes, "dir", "jar");
+            deployments.setFile(attributes.getValue("jar"));
+            deployments.setFile(attributes.getValue("file"));
+            deployments.setAutoDeploy("true".equals(attributes.getValue("autoDeploy")));
+            checkAttributes(attributes, "dir", "jar", "file", "autoDeploy");
         }
 
         @Override
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java b/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java
index 5589e91..f4189c1 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java
@@ -46,26 +46,31 @@
  */
 // Note: this class is a fork from OpenJPA
 public class TempClassLoader extends URLClassLoader {
+
     private final Set<Skip> skip;
     private final ClassLoader system;
     private final boolean embedded;
 
-    public TempClassLoader(ClassLoader parent) {
+    // 80% of class files are smaller then 6k
+    private final ByteArrayOutputStream bout = new ByteArrayOutputStream(6 * 1024);
+
+    public TempClassLoader(final ClassLoader parent) {
         super(new URL[0], parent);
-        skip = SystemInstance.get().getOptions().getAll("openejb.tempclassloader.skip", Skip.NONE);
-        system = ClassLoader.getSystemClassLoader();
-        embedded = getClass().getClassLoader() == system;
+        this.skip = SystemInstance.get().getOptions().getAll("openejb.tempclassloader.skip", Skip.NONE);
+        this.system = ClassLoader.getSystemClassLoader();
+        this.embedded = this.getClass().getClassLoader() == this.system;
     }
 
     /*
      * Needed for testing
      */
-    public void skip(Skip s) {
+    public void skip(final Skip s) {
         this.skip.add(s);
     }
 
-    public Class loadClass(String name) throws ClassNotFoundException {
-        return loadClass(name, false);
+    @Override
+    public Class loadClass(final String name) throws ClassNotFoundException {
+        return this.loadClass(name, false);
     }
 
     @Override
@@ -73,11 +78,12 @@
         return URLClassLoaderFirst.filterResources(name, super.getResources(name));
     }
 
-    protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException {
+    @Override
+    protected synchronized Class loadClass(final String name, final boolean resolve) throws ClassNotFoundException {
         if (name == null) throw new NullPointerException("name cannot be null");
-        
+
         // see if we've already loaded it
-        Class c = findLoadedClass(name);
+        Class c = this.findLoadedClass(name);
         if (c != null) {
             return c;
         }
@@ -96,16 +102,16 @@
          * 2. Since this class loader uses Class.forName to load classes starting with java, javax or sun, it cannot load javax.faces.FacesServlet
          * 3. Result is , AnnotationDeployer throws a ClassNotFoundException
          */
-        if (skip(name)) {
-            return Class.forName(name, resolve, getClass().getClassLoader());
+        if (this.skip(name)) {
+            return Class.forName(name, resolve, this.getClass().getClassLoader());
         }
 
         // don't load classes from app classloader
         // we do it after the previous one since it will probably result to the same
         // Class and the previous one is faster than this one
-        if (!embedded && URLClassLoaderFirst.canBeLoadedFromSystem(name)) {
+        if (!this.embedded && URLClassLoaderFirst.canBeLoadedFromSystem(name)) {
             try {
-                c = system.loadClass(name);
+                c = this.system.loadClass(name);
                 if (c != null) {
                     return c;
                 }
@@ -115,23 +121,28 @@
         }
 
 //        ( && !name.startsWith("javax.faces.") )||
-        String resourceName = name.replace('.', '/') + ".class";
-        InputStream in = getResourceAsStream(resourceName);
-        if (in != null && !(in instanceof BufferedInputStream)) {
-            in = new BufferedInputStream(in);
-        }
-        if (in == null) {
-            throw new ClassNotFoundException(name);
-        }
+        final String resourceName = name.replace('.', '/') + ".class";
 
-        // 80% of class files are smaller then 6k
-        ByteArrayOutputStream bout = new ByteArrayOutputStream(8 * 1024);
+        //Copy the input stream into a byte array
+        final byte[] bytes;
+        this.bout.reset();
+        InputStream in = null;
 
-        // copy the input stream into a byte array
-        byte[] bytes;
         try {
-            IO.copy(in, bout);
-            bytes = bout.toByteArray();
+
+            in = this.getResourceAsStream(resourceName);
+
+            if (in != null && !(in instanceof BufferedInputStream)) {
+                in = new BufferedInputStream(in);
+            }
+
+            if (in == null) {
+                throw new ClassNotFoundException(name);
+            }
+
+            IO.copy(in, this.bout);
+            bytes = this.bout.toByteArray();
+
         } catch (IOException e) {
             throw new ClassNotFoundException(name, e);
         } finally {
@@ -140,26 +151,26 @@
 
         // Annotation classes must be loaded by the normal classloader
         // So must Enum classes to prevent problems with the sun jdk.
-        if (skip.contains(Skip.ANNOTATIONS) && isAnnotationClass(bytes)) {
-            return Class.forName(name, resolve, getClass().getClassLoader());
+        if (this.skip.contains(Skip.ANNOTATIONS) && isAnnotationClass(bytes)) {
+            return Class.forName(name, resolve, this.getClass().getClassLoader());
         }
 
-        if (skip.contains(Skip.ENUMS) && isEnum(bytes)) {
-            return Class.forName(name, resolve, getClass().getClassLoader());
+        if (this.skip.contains(Skip.ENUMS) && isEnum(bytes)) {
+            return Class.forName(name, resolve, this.getClass().getClassLoader());
         }
 
         // define the package
-        int packageEndIndex = name.lastIndexOf('.');
+        final int packageEndIndex = name.lastIndexOf('.');
         if (packageEndIndex != -1) {
-            String packageName = name.substring(0, packageEndIndex);
-            if (getPackage(packageName) == null) {
-                definePackage(packageName, null, null, null, null, null, null, null);
+            final String packageName = name.substring(0, packageEndIndex);
+            if (this.getPackage(packageName) == null) {
+                this.definePackage(packageName, null, null, null, null, null, null, null);
             }
         }
 
         // define the class
         try {
-            return defineClass(name, bytes, 0, bytes.length);
+            return this.defineClass(name, bytes, 0, bytes.length);
         } catch (SecurityException e) {
             // possible prohibited package: defer to the parent
             return super.loadClass(name, resolve);
@@ -170,8 +181,8 @@
     }
 
     // TODO: for jsf it can be useful to include commons-logging and openwebbeans...
-    private boolean skip(String name) {
-        return skip.contains(Skip.ALL) || URLClassLoaderFirst.shouldSkip(name);
+    private boolean skip(final String name) {
+        return this.skip.contains(Skip.ALL) || URLClassLoaderFirst.shouldSkip(name);
     }
 
     public static enum Skip {
@@ -182,9 +193,9 @@
      * Fast-parse the given class bytecode to determine if it is an
      * enum class.
      */
-    private static boolean isEnum(byte[] bytes) {
-        IsEnumVisitor isEnumVisitor = new IsEnumVisitor();
-        ClassReader classReader = new ClassReader(bytes);
+    private static boolean isEnum(final byte[] bytes) {
+        final IsEnumVisitor isEnumVisitor = new IsEnumVisitor();
+        final ClassReader classReader = new ClassReader(bytes);
         classReader.accept(isEnumVisitor, ClassReader.SKIP_DEBUG);
         return isEnumVisitor.isEnum;
     }
@@ -193,9 +204,9 @@
      * Fast-parse the given class bytecode to determine if it is an
      * annotation class.
      */
-    private static boolean isAnnotationClass(byte[] bytes) {
-        IsAnnotationVisitor isAnnotationVisitor = new IsAnnotationVisitor();
-        ClassReader classReader = new ClassReader(bytes);
+    private static boolean isAnnotationClass(final byte[] bytes) {
+        final IsAnnotationVisitor isAnnotationVisitor = new IsAnnotationVisitor();
+        final ClassReader classReader = new ClassReader(bytes);
         classReader.accept(isAnnotationVisitor, ClassReader.SKIP_DEBUG);
         return isAnnotationVisitor.isAnnotation;
     }
@@ -203,17 +214,19 @@
     public static class IsAnnotationVisitor extends EmptyVisitor {
         public boolean isAnnotation = false;
 
-        public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) {
-            isAnnotation = (access & Opcodes.ACC_ANNOTATION) != 0;
+        @Override
+        public void visit(final int version, final int access, final String name, final String signature, final String superName, final String[] interfaces) {
+            this.isAnnotation = (access & Opcodes.ACC_ANNOTATION) != 0;
         }
 
     }
-    
+
     public static class IsEnumVisitor extends EmptyVisitor {
         public boolean isEnum = false;
 
-        public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) {
-            isEnum = (access & Opcodes.ACC_ENUM) != 0;
+        @Override
+        public void visit(final int version, final int access, final String name, final String signature, final String superName, final String[] interfaces) {
+            this.isEnum = (access & Opcodes.ACC_ENUM) != 0;
         }
 
     }
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java b/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
index d8504e1..47965eb 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
@@ -16,30 +16,6 @@
  */
 package org.apache.openejb.core.stateless;
 
-import java.io.Flushable;
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.rmi.RemoteException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.concurrent.Executor;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import javax.ejb.ConcurrentAccessTimeoutException;
-import javax.ejb.EJBContext;
-import javax.ejb.SessionBean;
-import javax.ejb.SessionContext;
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-import javax.naming.Context;
-import javax.naming.NamingException;
 import org.apache.openejb.ApplicationException;
 import org.apache.openejb.BeanContext;
 import org.apache.openejb.OpenEJBException;
@@ -47,7 +23,6 @@
 import org.apache.openejb.core.InstanceContext;
 import org.apache.openejb.core.Operation;
 import org.apache.openejb.core.ThreadContext;
-import org.apache.openejb.core.interceptor.Interceptor;
 import org.apache.openejb.core.interceptor.InterceptorData;
 import org.apache.openejb.core.interceptor.InterceptorInstance;
 import org.apache.openejb.core.interceptor.InterceptorStack;
@@ -67,9 +42,35 @@
 import org.apache.xbean.recipe.ObjectRecipe;
 import org.apache.xbean.recipe.Option;
 
+import javax.ejb.ConcurrentAccessTimeoutException;
+import javax.ejb.EJBContext;
+import javax.ejb.SessionBean;
+import javax.ejb.SessionContext;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.naming.Context;
+import javax.naming.NamingException;
+import java.io.Flushable;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.rmi.RemoteException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.concurrent.Executor;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
 public class StatelessInstanceManager {
     private static final Logger logger = Logger.getInstance(LogCategory.OPENEJB, "org.apache.openejb.util.resources");
     private static final Method removeSessionBeanMethod;
+
     static { // initialize it only once
         Method foundRemoveMethod;
         try {
@@ -97,15 +98,15 @@
 
         if (accessTimeout.getUnit() == null) accessTimeout.setUnit(TimeUnit.MILLISECONDS);
 
-        executor = new ThreadPoolExecutor(callbackThreads, callbackThreads*2,
+        executor = new ThreadPoolExecutor(callbackThreads, callbackThreads * 2,
                 0L, TimeUnit.MILLISECONDS,
                 new LinkedBlockingQueue<Runnable>(), new ThreadFactory() {
-                    public Thread newThread(Runnable runable) {
-                        Thread t = new Thread(runable, "StatelessPool");
-                        t.setDaemon(true);
-                        return t;
-                    }
-                });
+            public Thread newThread(Runnable runable) {
+                Thread t = new Thread(runable, "StatelessPool");
+                t.setDaemon(true);
+                return t;
+            }
+        });
 
 
     }
@@ -123,7 +124,7 @@
             try {
                 freeInstance(ctx, instance);
             } finally {
-                 ThreadContext.exit(oldCallContext);
+                ThreadContext.exit(oldCallContext);
             }
         }
 
@@ -135,12 +136,13 @@
             } catch (OpenEJBException e) {
                 logger.error("Unable to fill pool: for deployment '" + beanContext.getDeploymentID() + "'", e);
             } finally {
-                 ThreadContext.exit(oldCallContext);
+                ThreadContext.exit(oldCallContext);
             }
 
             return null;
         }
     }
+
     /**
      * Removes an instance from the pool and returns it for use
      * by the container in business methods.
@@ -164,7 +166,7 @@
         try {
             final Pool<Instance>.Entry entry = data.poolPop();
 
-            if (entry != null){
+            if (entry != null) {
                 instance = entry.get();
                 instance.setPoolEntry(entry);
             }
@@ -189,7 +191,7 @@
 
             final InstanceContext context = beanContext.newInstance();
 
-            if (context.getBean() instanceof SessionBean){
+            if (context.getBean() instanceof SessionBean) {
 
                 final Operation originalOperation = callContext.getCurrentOperation();
                 try {
@@ -236,7 +238,7 @@
 
         Pool<Instance> pool = data.getPool();
 
-        if (instance.getPoolEntry() != null){
+        if (instance.getPoolEntry() != null) {
             pool.push(instance.getPoolEntry());
         } else {
             pool.push(instance);
@@ -268,7 +270,7 @@
             callContext.setCurrentOperation(Operation.PRE_DESTROY);
             BeanContext beanContext = callContext.getBeanContext();
 
-            Method remove = instance.bean instanceof SessionBean? removeSessionBeanMethod : null;
+            Method remove = instance.bean instanceof SessionBean ? removeSessionBeanMethod : null;
 
             List<InterceptorData> callbackInterceptors = beanContext.getCallbackInterceptors();
             InterceptorStack interceptorStack = new InterceptorStack(instance.bean, remove, Operation.PRE_DESTROY, callbackInterceptors, instance.interceptors);
@@ -374,7 +376,7 @@
         }
 
         // Finally, fill the pool and start it
-        if (!options.get("BackgroundStartup", false) && min > 0)  {
+        if (!options.get("BackgroundStartup", false) && min > 0) {
             ExecutorService es = Executors.newFixedThreadPool(min);
             for (int i = 0; i < min; i++) {
                 es.submit(new InstanceCreatorRunnable(maxAge, i, min, maxAgeOffset, data, supplier));
@@ -410,7 +412,7 @@
             try {
                 server.unregisterMBean(objectName);
             } catch (Exception e) {
-                logger.error("Unable to unregister MBean "+objectName);
+                logger.error("Unable to unregister MBean " + objectName);
             }
         }
 
@@ -482,7 +484,8 @@
             this.supplier = supplier;
         }
 
-        @Override public void run() {
+        @Override
+        public void run() {
             final Instance obj = supplier.create();
             if (obj != null) {
                 long offset = maxAge > 0 ? (long) (maxAge / maxAgeOffset * min * iteration) % maxAge : 0l;
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java b/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java
index cf3a426..8ff35fb 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java
@@ -54,6 +54,7 @@
 import org.apache.openejb.spi.ContainerSystem;
 import org.apache.openejb.util.Join;
 import org.apache.openejb.util.ServiceManagerProxy;
+import org.apache.openejb.util.URLs;
 import org.apache.openejb.web.LightweightWebAppBuilder;
 import org.apache.webbeans.inject.AbstractInjectable;
 import org.apache.webbeans.inject.OWBInjector;
@@ -61,6 +62,7 @@
 import org.apache.webbeans.web.lifecycle.test.MockServletContext;
 import org.apache.xbean.finder.AnnotationFinder;
 import org.apache.xbean.finder.IAnnotationFinder;
+import org.apache.xbean.finder.ResourceFinder;
 import org.apache.xbean.finder.archive.Archive;
 import org.apache.xbean.finder.archive.ClassesArchive;
 import org.junit.rules.MethodRule;
@@ -72,6 +74,8 @@
 import org.junit.runners.model.TestClass;
 
 import javax.naming.Context;
+import java.io.File;
+import java.io.IOException;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.net.URL;
@@ -402,12 +406,12 @@
                 } else if (obj instanceof Persistence) {
 
                     final Persistence persistence = (Persistence) obj;
-                    appModule.addPersistenceModule(new PersistenceModule("", persistence));
+                    appModule.addPersistenceModule(new PersistenceModule(implicitRootUrl(), persistence));
 
                 } else if (obj instanceof PersistenceUnit) {
 
                     final PersistenceUnit unit = (PersistenceUnit) obj;
-                    appModule.addPersistenceModule(new PersistenceModule("", new Persistence(unit)));
+                    appModule.addPersistenceModule(new PersistenceModule(implicitRootUrl(), new Persistence(unit)));
 
                 } else if (obj instanceof Beans) {
 
@@ -608,6 +612,28 @@
         }
     }
 
+    private static String implicitRootUrl() {
+        final ResourceFinder finder = new ResourceFinder("", Thread.currentThread().getContextClassLoader());
+        try {
+            final URL url = DeploymentLoader.altDDSources(DeploymentLoader.mapDescriptors(finder), false).get("persistence.xml");
+            if (url == null) {
+                return "";
+            }
+
+            final File file = URLs.toFile(url);
+            if (file.getName().endsWith("persistence.xml")) {
+                final String parent = file.getParentFile().getName();
+                if (parent.equalsIgnoreCase("META-INF")) {
+                    return file.getParentFile().getParentFile().getAbsolutePath();
+                }
+                return file.getParentFile().getAbsolutePath();
+            }
+            return url.toExternalForm();
+        } catch (IOException e) {
+            return "";
+        }
+    }
+
     private static Map<String, URL> descriptorsToMap(final Descriptors descriptors) {
         if (descriptors != null) {
             final Map<String, URL> dds = new HashMap<String, URL>();
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/log/SingleLineFormatter.java b/container/openejb-core/src/main/java/org/apache/openejb/log/SingleLineFormatter.java
index 3f73ab3..9be782e 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/log/SingleLineFormatter.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/log/SingleLineFormatter.java
@@ -16,14 +16,16 @@
  */
 package org.apache.openejb.log;
 
+import org.fusesource.jansi.Ansi;
+
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.util.logging.Formatter;
 import java.util.logging.LogRecord;
-import org.fusesource.jansi.Ansi;
 
 public class SingleLineFormatter extends Formatter {
-    @Override public synchronized String format(LogRecord record) {
+    @Override
+    public synchronized String format(LogRecord record) {
         final boolean exception = record.getThrown() != null;
         final Ansi sbuf = prefix(record);
         sbuf.a(record.getLevel().getLocalizedName());
@@ -41,7 +43,7 @@
                 pw.close();
                 sbuf.a(sw.toString());
             } catch (Exception ex) {
-                 // no-op
+                // no-op
             } finally {
                 suffix(sbuf, record);
             }
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/monitoring/LocalMBeanServer.java b/container/openejb-core/src/main/java/org/apache/openejb/monitoring/LocalMBeanServer.java
index ac6005e..05e4e62 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/monitoring/LocalMBeanServer.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/monitoring/LocalMBeanServer.java
@@ -55,7 +55,7 @@
     }
 
     public static void reset() {
-        active = SystemInstance.get().getOptions().get(OPENEJB_JMX_ACTIVE, false);
+        active = SystemInstance.get().getOptions().get(OPENEJB_JMX_ACTIVE, true);
     }
 
     public static MBeanServer get() {
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/rest/MultivaluedMapWithCaseInsensitiveKeySet.java b/container/openejb-core/src/main/java/org/apache/openejb/rest/MultivaluedMapWithCaseInsensitiveKeySet.java
index b5bcd4f..733fbe3 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/rest/MultivaluedMapWithCaseInsensitiveKeySet.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/rest/MultivaluedMapWithCaseInsensitiveKeySet.java
@@ -31,63 +31,78 @@
         delegate = map;
     }
 
-    @Override public void add(String key, V value) {
+    @Override
+    public void add(String key, V value) {
         delegate.add(key, value);
     }
 
-    @Override public V getFirst(String key) {
+    @Override
+    public V getFirst(String key) {
         return delegate.getFirst(realKey(key));
     }
 
-    @Override public void putSingle(String key, V value) {
+    @Override
+    public void putSingle(String key, V value) {
         delegate.putSingle(key, value);
     }
 
-    @Override public int size() {
+    @Override
+    public int size() {
         return delegate.size();
     }
 
-    @Override public boolean isEmpty() {
+    @Override
+    public boolean isEmpty() {
         return delegate.isEmpty();
     }
 
-    @Override public boolean containsKey(Object key) {
+    @Override
+    public boolean containsKey(Object key) {
         return getInsensitiveKeySet(delegate.keySet()).contains(key.toString());
     }
 
-    @Override public boolean containsValue(Object value) {
+    @Override
+    public boolean containsValue(Object value) {
         return delegate.containsValue(value);
     }
 
-    @Override public List<V> get(Object key) {
+    @Override
+    public List<V> get(Object key) {
         return delegate.get(realKey(key));
     }
 
-    @Override public List<V> put(String key, List<V> value) {
+    @Override
+    public List<V> put(String key, List<V> value) {
         return delegate.put(key, value);
     }
 
-    @Override public List<V> remove(Object key) {
+    @Override
+    public List<V> remove(Object key) {
         return delegate.remove(realKey(key));
     }
 
-    @Override public void putAll(Map<? extends String, ? extends List<V>> m) {
+    @Override
+    public void putAll(Map<? extends String, ? extends List<V>> m) {
         delegate.putAll(m);
     }
 
-    @Override public void clear() {
+    @Override
+    public void clear() {
         delegate.clear();
     }
 
-    @Override public Set<String> keySet() {
+    @Override
+    public Set<String> keySet() {
         return getInsensitiveKeySet(delegate.keySet());
     }
 
-    @Override public Collection<List<V>> values() {
+    @Override
+    public Collection<List<V>> values() {
         return delegate.values();
     }
 
-    @Override public Set<Entry<String, List<V>>> entrySet() {
+    @Override
+    public Set<Entry<String, List<V>>> entrySet() {
         return delegate.entrySet();
     }
 
@@ -98,7 +113,7 @@
     }
 
     private static Object lowerCase(Object key) {
-        if (key instanceof String ) {
+        if (key instanceof String) {
             return ((String) key).toLowerCase();
         }
         return key;
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/AnnotationFinder.java b/container/openejb-core/src/main/java/org/apache/openejb/util/AnnotationFinder.java
index aa34c26..41fef1f 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/AnnotationFinder.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/AnnotationFinder.java
@@ -40,6 +40,7 @@
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 import java.util.jar.JarInputStream;
+import java.util.logging.*;
 
 /**
  * ClassFinder searches the classpath of the specified classloader for
@@ -78,7 +79,7 @@
      * @param classLoader source of classes to scan
      * @throws Exception if something goes wrong
      */
-    public AnnotationFinder(ClassLoader classLoader) throws Exception {
+    public AnnotationFinder(final ClassLoader classLoader) throws Exception {
         this(classLoader, true);
     }
 
@@ -89,7 +90,7 @@
      * @param excludeParent Allegedly excludes classes from parent classloader, whatever that might mean
      * @throws Exception if something goes wrong.
      */
-    public AnnotationFinder(ClassLoader classLoader, boolean excludeParent) throws Exception {
+    public AnnotationFinder(final ClassLoader classLoader, final boolean excludeParent) throws Exception {
         this(classLoader, AnnotationFinder.getUrls(classLoader, excludeParent));
     }
 
@@ -101,19 +102,19 @@
      * @param exclude source of classes to exclude from scanning
      * @throws Exception if something goes wrong
      */
-    public AnnotationFinder(ClassLoader classLoader, ClassLoader exclude) throws Exception {
+    public AnnotationFinder(final ClassLoader classLoader, final ClassLoader exclude) throws Exception {
         this(classLoader, AnnotationFinder.getUrls(classLoader, exclude));
     }
 
-    public AnnotationFinder(ClassLoader classLoader, URL url) {
+    public AnnotationFinder(final ClassLoader classLoader, final URL url) {
         this(classLoader, Arrays.asList(url));
     }
 
-    public AnnotationFinder(ClassLoader classLoader, Collection<URL> urls) {
+    public AnnotationFinder(final ClassLoader classLoader, final Collection<URL> urls) {
         this.classLoader = classLoader;
         this.urls = urls;
         classNames = new ArrayList<String>();
-        for (URL location : urls) {
+        for (final URL location : urls) {
             if (location == null) {
                 continue;
             }
@@ -124,8 +125,8 @@
                 } else if (location.getProtocol().equals("file")) {
                     try {
                         // See if it's actually a jar
-                        URL jarUrl = new URL("jar", "", location.toExternalForm() + "!/");
-                        JarURLConnection juc = (JarURLConnection) jarUrl.openConnection();
+                        final URL jarUrl = new URL("jar", "", location.toExternalForm() + "!/");
+                        final JarURLConnection juc = (JarURLConnection) jarUrl.openConnection();
                         juc.getJarFile();
                         classNames.addAll(jar(jarUrl));
                     } catch (IOException e) {
@@ -154,10 +155,10 @@
         return Collections.unmodifiableList(classesNotLoaded);
     }
 
-    public boolean find(Filter filter){
-        Visitor annotationVisitor = new Visitor(filter);
+    public boolean find(final Filter filter){
+        final Visitor annotationVisitor = new Visitor(filter);
 
-        for (String className : classNames) {
+        for (final String className : classNames) {
             try {
                 readClassDef(className, annotationVisitor);
             } catch (NotFoundException e) {
@@ -172,11 +173,11 @@
         boolean accept(String annotationName);
     }
 
-    private static Collection<URL> getUrls(ClassLoader classLoader, boolean excludeParent) throws IOException {
+    private static Collection<URL> getUrls(final ClassLoader classLoader, final boolean excludeParent) throws IOException {
         return AnnotationFinder.getUrls(classLoader, excludeParent? classLoader.getParent() : null);
     }
 
-    private static Collection<URL> getUrls(ClassLoader classLoader, ClassLoader excludeParent) throws IOException {
+    private static Collection<URL> getUrls(final ClassLoader classLoader, final ClassLoader excludeParent) throws IOException {
         UrlSet urlSet = new UrlSet(classLoader);
         if (excludeParent != null){
             urlSet = urlSet.exclude(excludeParent);
@@ -184,9 +185,14 @@
         return urlSet.getUrls();
     }
 
-    private List<String> file(URL location) {
-        List<String> classNames = new ArrayList<String>();
-        File dir = new File(URLDecoder.decode(location.getPath()));
+    private List<String> file(final URL location) {
+        final List<String> classNames = new ArrayList<String>();
+        File dir = null;
+        try {
+            dir = new File(URLDecoder.decode(location.getPath(),"UTF-8"));
+        } catch (Exception e) {
+            dir = new File(URLDecoder.decode(location.getPath()));
+        }
         if (dir.getName().equals("META-INF")) {
             dir = dir.getParentFile(); // Scrape "META-INF" off
         }
@@ -196,10 +202,10 @@
         return classNames;
     }
 
-    private void scanDir(File dir, List<String> classNames, String packageName) {
-        File[] files = dir.listFiles();
+    private void scanDir(final File dir, final List<String> classNames, final String packageName) {
+        final File[] files = dir.listFiles();
         if (files != null) {
-            for (File file : files) {
+            for (final File file : files) {
                 if (file.isDirectory()) {
                     scanDir(file, classNames, packageName + file.getName() + ".");
                 } else if (file.getName().endsWith(".class")) {
@@ -212,20 +218,20 @@
         }
     }
 
-    private List<String> jar(URL location) throws IOException {
+    private List<String> jar(final URL location) throws IOException {
         String jarPath = location.getFile();
         if (jarPath.indexOf("!") > -1){
             jarPath = jarPath.substring(0, jarPath.indexOf("!"));
         }
-        URL url = new URL(jarPath);
+        final URL url = new URL(jarPath);
         if ("file".equals(url.getProtocol())) { // ZipFile is faster than ZipInputStream
-            JarFile jarFile = new JarFile(url.getFile().replace("%20", " "));
+            final JarFile jarFile = new JarFile(url.getFile().replace("%20", " "));
             return jar(jarFile);
         } else {
             InputStream in = url.openStream();
             in = new BufferedInputStream(in);
             try {
-                JarInputStream jarStream = new JarInputStream(in);
+                final JarInputStream jarStream = new JarInputStream(in);
                 return jar(jarStream);
             } finally {
                 in.close();
@@ -233,20 +239,20 @@
         }
     }
 
-    private List<String> jar(JarFile jarFile) {
-        List<String> classNames = new ArrayList<String>();
+    private List<String> jar(final JarFile jarFile) {
+        final List<String> classNames = new ArrayList<String>();
 
-        Enumeration<? extends JarEntry> jarEntries =jarFile.entries();
+        final Enumeration<? extends JarEntry> jarEntries =jarFile.entries();
         while (jarEntries.hasMoreElements()) {
-            JarEntry entry = jarEntries.nextElement();
+            final JarEntry entry = jarEntries.nextElement();
             addClassName(classNames, entry);
         }
 
         return classNames;
     }
 
-    private List<String> jar(JarInputStream jarStream) throws IOException {
-        List<String> classNames = new ArrayList<String>();
+    private List<String> jar(final JarInputStream jarStream) throws IOException {
+        final List<String> classNames = new ArrayList<String>();
 
         JarEntry entry;
         while ((entry = jarStream.getNextJarEntry()) != null) {
@@ -256,7 +262,7 @@
         return classNames;
     }
 
-    private void addClassName(List<String> classNames, JarEntry entry) {
+    private void addClassName(final List<String> classNames, final JarEntry entry) {
         if (entry.isDirectory() || !entry.getName().endsWith(".class")) {
             return;
         }
@@ -269,18 +275,18 @@
         classNames.add(className);
     }
 
-    private void readClassDef(String className, ClassVisitor visitor) {
+    private void readClassDef(String className, final ClassVisitor visitor) {
         classes++;
         if (!className.endsWith(".class")) {
             className = className.replace('.', '/') + ".class";
         }
         try {
-            URL resource = classLoader.getResource(className);
+            final URL resource = classLoader.getResource(className);
             if (resource != null) {
                 InputStream in = resource.openStream();
                 in = new BufferedInputStream(in);
                 try {
-                    ClassReader classReader = new ClassReader(in);
+                    final ClassReader classReader = new ClassReader(in);
                     classReader.accept(visitor, ASM_FLAGS);
                 } finally {
                     in.close();
@@ -308,7 +314,7 @@
         private FoundException foundException;
         private final Filter filter;
 
-        public Visitor(Filter filter) {
+        public Visitor(final Filter filter) {
             this.filter = filter;
 
             try {
@@ -324,11 +330,12 @@
             }
         }
 
-        public AnnotationVisitor visitAnnotation(String name, boolean visible) {
+        @Override
+        public AnnotationVisitor visitAnnotation(String name, final boolean visible) {
             // annotation names show up as
             // Ljavax.ejb.Stateless;
             // so we hack of the first and last chars and replace the slashes
-            StringBuilder sb = new StringBuilder(name);
+            final StringBuilder sb = new StringBuilder(name);
             sb.deleteCharAt(0);
             sb.deleteCharAt(sb.length()-1);
             for (int i = 0; i < sb.length(); i++) {
@@ -346,31 +353,39 @@
         }
 
 
-        public void visit(int i, int i1, String string, String string1, String string2, String[] strings) {
+        @Override
+        public void visit(final int i, final int i1, final String string, final String string1, final String string2, final String[] strings) {
         }
 
-        public void visitSource(String string, String string1) {
+        @Override
+        public void visitSource(final String string, final String string1) {
         }
 
-        public void visitOuterClass(String string, String string1, String string2) {
+        @Override
+        public void visitOuterClass(final String string, final String string1, final String string2) {
         }
 
-        public void visitAttribute(Attribute attribute) {
+        @Override
+        public void visitAttribute(final Attribute attribute) {
             throw notFoundException;
         }
 
-        public void visitInnerClass(String string, String string1, String string2, int i) {
+        @Override
+        public void visitInnerClass(final String string, final String string1, final String string2, final int i) {
             throw notFoundException;
         }
 
-        public FieldVisitor visitField(int i, String string, String string1, String string2, Object object) {
+        @Override
+        public FieldVisitor visitField(final int i, final String string, final String string1, final String string2, final Object object) {
             throw notFoundException;
         }
 
-        public MethodVisitor visitMethod(int i, String string, String string1, String string2, String[] strings) {
+        @Override
+        public MethodVisitor visitMethod(final int i, final String string, final String string1, final String string2, final String[] strings) {
             throw notFoundException;
         }
 
+        @Override
         public void visitEnd() {
             throw notFoundException;
         }
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/DirectoryMonitor.java b/container/openejb-core/src/main/java/org/apache/openejb/util/DirectoryMonitor.java
index 627c496..d3d0642 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/DirectoryMonitor.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/DirectoryMonitor.java
@@ -31,17 +31,17 @@
 
     public static final Logger logger = Logger.getInstance(LogCategory.OPENEJB_DEPLOY, DirectoryMonitor.class.getPackage().getName());
 
-    private final int pollIntervalMillis;
+    private final long pollIntervalMillis;
 
     private final File target;
 
     private final Listener listener;
 
-    private final Map files = new HashMap();
+    private final Map<String, FileInfo> files = new HashMap<String, FileInfo>();
 
     private final Timer timer;
 
-    public DirectoryMonitor(final File target, final Listener listener, final int pollIntervalMillis) {
+    public DirectoryMonitor(final File target, final Listener listener, final long pollIntervalMillis) {
         assert listener == null : "No listener specified";
         assert target.isDirectory() : "File specified is not a directory. " + target.getAbsolutePath();
         assert target.canRead() : "Directory specified cannot be read. " + target.getAbsolutePath();
@@ -59,7 +59,7 @@
         return logger;
     }
 
-    public int getPollIntervalMillis() {
+    public long getPollIntervalMillis() {
         return pollIntervalMillis;
     }
 
@@ -80,12 +80,12 @@
 
         getLogger().debug("Scanner running.  Polling every " + pollIntervalMillis + " milliseconds.");
 
-        timer.scheduleAtFixedRate(new TimerTask(){
+        timer.scheduleAtFixedRate(new TimerTask() {
+            @Override
             public void run() {
                 try {
                     scan();
-                }
-                catch (Exception e) {
+                } catch (Exception e) {
                     getLogger().error("Scan failed.", e);
                 }
             }
@@ -96,7 +96,7 @@
     private void initialize() {
         getLogger().debug("Doing initial scan of " + target.getAbsolutePath());
 
-        final File[] files = (target.isDirectory()) ? target.listFiles(): new File[]{target};
+        final File[] files = (target.isDirectory()) ? target.listFiles() : new File[]{target};
 
         if (files != null) {
             for (final File file : files) {
@@ -111,6 +111,17 @@
         }
     }
 
+    public void addFile(final File file) {
+        newInfo(file);
+    }
+
+    public void removeFile(final File file) {
+        final FileInfo fileInfo = oldInfo(file);
+        if (fileInfo != null) {
+            files.remove(fileInfo.getPath());
+        }
+    }
+
     private FileInfo newInfo(final File child) {
         final FileInfo fileInfo = child.isDirectory() ? new DirectoryInfo(child) : new FileInfo(child);
         files.put(fileInfo.getPath(), fileInfo);
@@ -122,7 +133,7 @@
      */
     public void scan() {
 
-        final File[] files = (target.isDirectory()) ? target.listFiles(): new File[]{target};
+        final File[] files = (target.isDirectory()) ? target.listFiles() : new File[]{target};
 
         final HashSet<String> missingFilesList = new HashSet<String>(this.files.keySet());
 
@@ -174,7 +185,7 @@
     }
 
     private FileInfo oldInfo(final File file) {
-        return (FileInfo) files.get(file.getAbsolutePath());
+        return files.get(file.getAbsolutePath());
     }
 
     /**
@@ -234,7 +245,7 @@
      * Provides details about a file.
      */
     private static class FileInfo implements Serializable {
-        private String path;
+        private final String path;
 
         private long size;
 
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/JarCreator.java b/container/openejb-core/src/main/java/org/apache/openejb/util/JarCreator.java
index 4a387f9..2969b6c 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/JarCreator.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/JarCreator.java
@@ -41,8 +41,8 @@
             prefix += File.separator;
         }
 
-        for (String entry : entries) {
-            File f = new File(dir, entry);
+        for (final String entry : entries) {
+            final File f = new File(dir, entry);
             jarFile(out, f, prefix);
         }
         IO.close(out);
@@ -50,7 +50,8 @@
 
     private static void jarFile(final JarOutputStream out, final File f, final String prefix) throws IOException {
         if (f.isDirectory()) {
-            for (File child : f.listFiles()) {
+            final File[] files = f.listFiles();
+            if (null != files) for (final File child : files) {
                 jarFile(out, child, prefix);
             }
         } else {
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/JarExtractor.java b/container/openejb-core/src/main/java/org/apache/openejb/util/JarExtractor.java
index f151a7f..ddcc23d 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/JarExtractor.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/JarExtractor.java
@@ -16,8 +16,10 @@
  */
 package org.apache.openejb.util;
 
+import org.apache.openejb.loader.FileUtils;
 import org.apache.openejb.loader.Files;
 import org.apache.openejb.loader.IO;
+import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.loader.Zips;
 
 import java.io.BufferedOutputStream;
@@ -27,6 +29,7 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.channels.FileChannel;
+import java.util.Properties;
 
 /**
  * @version $Rev$ $Date$
@@ -38,14 +41,26 @@
      * Extract the Jar file into an unpacked directory structure, and
      * return the absolute pathname to the extracted directory.
      *
-     * @param file Jar file to unpack
+     * @param file     Jar file to unpack
      * @param pathname Context path name for web application
      * @throws IllegalArgumentException if this is not a "jar:" URL
-     * @throws java.io.IOException              if an input/output error was encountered
+     * @throws java.io.IOException      if an input/output error was encountered
      *                                  during expansion
      */
-    public static File extract(File file, String pathname) throws IOException {
-        File docBase = new File(file.getParentFile(), pathname);
+    public static File extract(final File file, final String pathname) throws IOException {
+
+        final Properties properties = SystemInstance.get().getProperties();
+        final String key = "tomee.unpack.dir";
+
+        File unpackDir = file.getParentFile();
+
+        if (properties.containsKey(key)) {
+            final FileUtils base = SystemInstance.get().getBase();
+            unpackDir = base.getDirectory(properties.getProperty(key), true);
+        }
+
+        final File docBase = new File(unpackDir, pathname);
+
         extract(file, docBase);
         return docBase;
     }
@@ -54,11 +69,11 @@
      * Extract the jar file into the specifiec destination directory.  If the destination directory
      * already exists, the jar will not be unpacked.
      *
-     * @param file jar file to unpack
+     * @param file           jar file to unpack
      * @param destinationDir the directory in which the jar will be unpacked; must not exist
      * @throws java.io.IOException if an input/output error was encountered during expansion
      */
-    public static void extract(File file, File destinationDir) throws IOException {
+    public static void extract(final File file, final File destinationDir) throws IOException {
         if (destinationDir.exists()) {
 
             if (destinationDir.lastModified() > file.lastModified()) {
@@ -94,7 +109,7 @@
      * @param src  File object representing the source
      * @param dest File object representing the destination
      */
-    public static boolean copyRecursively(File src, File dest) {
+    public static boolean copyRecursively(final File src, final File dest) {
 
         boolean result = true;
 
@@ -147,14 +162,8 @@
      *
      * @param dir File object representing the directory to be deleted
      */
-    public static boolean delete(File dir) {
-        if (dir == null) return true;
-
-        if (dir.isDirectory()) {
-            return deleteDir(dir);
-        } else {
-            return dir.delete();
-        }
+    public static boolean delete(final File dir) {
+        return deleteDir(dir);
     }
 
 
@@ -164,23 +173,19 @@
      *
      * @param dir File object representing the directory to be deleted
      */
-    public static boolean deleteDir(File dir) {
+    public static boolean deleteDir(final File dir) {
         if (dir == null) return true;
 
-        String fileNames[] = dir.list();
-        if (fileNames == null) {
-            fileNames = new String[0];
-        }
-        for (String fileName : fileNames) {
-            File file = new File(dir, fileName);
-            if (file.isDirectory()) {
-                deleteDir(file);
-            } else {
-                file.delete();
+        if (dir.isDirectory()) {
+            final File[] files = dir.listFiles();
+            if (files != null) {
+                for (final File file : files) {
+                    deleteDir(file);
+                }
             }
         }
-        return dir.delete();
 
+        return dir.delete();
     }
 
 
@@ -194,17 +199,17 @@
      * @return A handle to the extracted File
      * @throws java.io.IOException if an input/output error occurs
      */
-    protected static File extract(InputStream input, File docBase, String name)
+    protected static File extract(final InputStream input, final File docBase, final String name)
             throws IOException {
 
-        File file = new File(docBase, name);
+        final File file = new File(docBase, name);
         BufferedOutputStream output = null;
         try {
             output =
                     new BufferedOutputStream(new FileOutputStream(file));
-            byte buffer[] = new byte[2048];
+            final byte[] buffer = new byte[2048];
             while (true) {
-                int n = input.read(buffer);
+                final int n = input.read(buffer);
                 if (n <= 0)
                     break;
                 output.write(buffer, 0, n);
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/URLs.java b/container/openejb-core/src/main/java/org/apache/openejb/util/URLs.java
index baf1ef6..7b7a024 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/URLs.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/URLs.java
@@ -55,6 +55,28 @@
         }
     }
 
+    public static URL toFileUrl(final URL url) {
+        if ("jar".equals(url.getProtocol())) {
+            try {
+                final String spec = url.getFile();
+
+                int separator = spec.indexOf('!');
+                /*
+                 * REMIND: we don't handle nested JAR URLs
+                 */
+                if (separator == -1) throw new MalformedURLException("no ! found in jar url spec:" + spec);
+
+                return new URL(spec.substring(0, separator++));
+            } catch (MalformedURLException e) {
+                throw new IllegalStateException(e);
+            }
+        } else if ("file".equals(url.getProtocol())) {
+            return url;
+        } else {
+            throw new IllegalArgumentException("Unsupported URL scheme: " + url.toExternalForm());
+        }
+    }
+
     public static String toFilePath(final URL url) {
         return toFile(url).getAbsolutePath();
     }
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/MultipleClassLoader.java b/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/MultipleClassLoader.java
index cc4ccdf..d995ed0 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/MultipleClassLoader.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/MultipleClassLoader.java
@@ -30,7 +30,8 @@
         this.second = second;
     }
 
-    @Override public Class<?> loadClass(String name) throws ClassNotFoundException {
+    @Override
+    public Class<?> loadClass(String name) throws ClassNotFoundException {
         try {
             return super.loadClass(name);
         } catch (ClassNotFoundException cnfe) {
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java b/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
index 4da2407..4507ad0 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
@@ -166,18 +166,14 @@
 
     // making all these call inline if far more costly than factorizing packages
     public static boolean shouldSkip(final String name) {
-        if (FORCED_SKIP != null) {
-            for (String prefix : FORCED_SKIP) {
-                if (name.startsWith(prefix)) {
-                    return true;
-                }
+        for (String prefix : FORCED_SKIP) {
+            if (name.startsWith(prefix)) {
+                return true;
             }
         }
-        if (FORCED_LOAD != null) {
-            for (String prefix : FORCED_LOAD) {
-                if (name.startsWith(prefix)) {
-                    return false;
-                }
+        for (String prefix : FORCED_LOAD) {
+            if (name.startsWith(prefix)) {
+                return false;
             }
         }
 
@@ -321,7 +317,8 @@
     // in org.apache.openejb.
     private static boolean isWebAppEnrichment(final String openejb) {
         return openejb.startsWith("hibernate.") || openejb.startsWith("jpa.integration.")
-                || openejb.startsWith("toplink.") || openejb.startsWith("eclipselink.");
+                || openejb.startsWith("toplink.") || openejb.startsWith("eclipselink.")
+                || openejb.startsWith("arquillian.");
     }
 
     @Override
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/helper/CommandHelper.java b/container/openejb-core/src/main/java/org/apache/openejb/util/helper/CommandHelper.java
index 3d88f26..947ab49 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/helper/CommandHelper.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/helper/CommandHelper.java
@@ -39,7 +39,7 @@
         Lines lines = new Lines(cr);
         lines.add(new Line("Name", "Class", "Interface Type", "Bean Type"));
         for (BeanContext bc : cs.deployments()) {
-            if (BeanContext.Comp.class.equals(bc.getBeanClass())) {
+            if (bc.isHidden()) {
                 continue;
             }
 
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java b/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java
index cb276fc..5814ec3 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java
@@ -16,6 +16,13 @@
  */
 package org.apache.openejb;
 
+import junit.framework.AssertionFailedError;
+import junit.framework.TestCase;
+import junit.framework.TestResult;
+import org.apache.openejb.loader.IO;
+import org.apache.xbean.asm.ClassReader;
+import org.apache.xbean.asm.ClassWriter;
+
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -24,12 +31,6 @@
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
-import junit.framework.AssertionFailedError;
-import junit.framework.TestCase;
-import junit.framework.TestResult;
-import org.apache.openejb.loader.IO;
-import org.apache.xbean.asm.ClassReader;
-import org.apache.xbean.asm.ClassWriter;
 
 import static org.apache.openejb.util.URLs.toFile;
 
@@ -39,22 +40,23 @@
 
     private TestResult results;
 
-    public void run(TestResult testResult) {
+    @Override
+    public void run(final TestResult testResult) {
         results = testResult;
         super.run(testResult);
     }
 
     public void testAssembler() throws Exception {
-        DependencyVisitor dependencyVisitor = new DependencyVisitor();
+        final DependencyVisitor dependencyVisitor = new DependencyVisitor();
 
-        URL resource = DependenceValidationTest.class.getResource("/org/apache/openejb/OpenEJB.class");
-        File file = toFile(resource);
+        final URL resource = DependenceValidationTest.class.getResource("/org/apache/openejb/OpenEJB.class");
+        final File file = toFile(resource);
         dir(file.getParentFile(), dependencyVisitor);
 
         depsOfPackages = dependencyVisitor.groups;
 
         // Nothing may depend on the Assembler except the config code and events
-        String dynamicAssembler = "org.apache.openejb.assembler.dynamic";
+        final String dynamicAssembler = "org.apache.openejb.assembler.dynamic";
         assertNotDependentOn("org.apache.openejb", "org.apache.openejb.assembler.classic", "org.apache.openejb.config.typed.util", "org.apache.openejb.assembler", "org.apache.openejb.assembler.classic.util", "org.apache.openejb.config", "org.apache.openejb.assembler.dynamic", "org.apache.openejb.assembler.classic.cmd", "org.apache.openejb.assembler.monitoring", "org.apache.openejb.cdi", "org.apache.openejb.junit", "org.apache.openejb.assembler.classic.event", "org.apache.openejb.web");
 
         // Nothing may depend on the Dynamic Assembler
@@ -77,18 +79,18 @@
         // assertNotDependentOn("org.apache.openejb", "org.apache.openejb.core.entity", dynamicAssembler);
     }
 
-    private void assertNotDependentOn(String referringPacakge, String referredPackage, String... exemptionsArray) {
+    private void assertNotDependentOn(final String referringPacakge, final String referredPackage, final String... exemptionsArray) {
         if (referringPacakge.equals(referredPackage)) return;
-        List<String> exemptions = new ArrayList<String>(Arrays.asList(exemptionsArray));
+        final List<String> exemptions = new ArrayList<String>(Arrays.asList(exemptionsArray));
         exemptions.add(referredPackage);
 
-        for (Map.Entry<String, Map<String, Integer>> entry : depsOfPackages.entrySet()) {
-            String packageName = entry.getKey();
+        for (final Map.Entry<String, Map<String, Integer>> entry : depsOfPackages.entrySet()) {
+            final String packageName = entry.getKey();
             if (packageName.startsWith(referringPacakge) && !exemptions.contains(packageName)) {
                 try {
-                    Map<String, Integer> deps = entry.getValue();
+                    final Map<String, Integer> deps = entry.getValue();
                     if (deps.containsKey(referredPackage)) {
-                        int references = deps.get(referredPackage);
+                        final int references = deps.get(referredPackage);
                         assertEquals(packageName + " should have no dependencies on " + referredPackage, 0, references);
                     }
                 } catch (AssertionFailedError e) {
@@ -98,10 +100,10 @@
         }
     }
 
-    private static void dir(File dir, DependencyVisitor dependencyVisitor) {
+    private static void dir(final File dir, final DependencyVisitor dependencyVisitor) {
         final File[] files = dir.listFiles();
         if (files != null) {
-            for (File file : files) {
+            for (final File file : files) {
                 if (file.isDirectory()) {
                     dir(file, dependencyVisitor);
                 } else if (file.getName().endsWith(".class")) {
@@ -111,11 +113,11 @@
         }
     }
 
-    private static void file(File file, DependencyVisitor dependencyVisitor) {
+    private static void file(final File file, final DependencyVisitor dependencyVisitor) {
         try {
             final InputStream in = IO.read(file);
             try {
-                ClassReader classReader = new ClassReader(in);
+                final ClassReader classReader = new ClassReader(in);
                 classReader.accept(dependencyVisitor, ClassWriter.COMPUTE_MAXS);
             } finally {
                 IO.close(in);
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/DataSourceDefinitionTest.java b/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/DataSourceDefinitionTest.java
index 808b081..acde2be 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/DataSourceDefinitionTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/DataSourceDefinitionTest.java
@@ -28,7 +28,6 @@
 import javax.ejb.Singleton;
 import javax.ejb.Stateless;
 import javax.sql.DataSource;
-import javax.transaction.UserTransaction;
 import java.lang.reflect.Field;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
@@ -48,23 +47,27 @@
 @RunWith(ApplicationComposer.class)
 public class DataSourceDefinitionTest {
 
-    @EJB private DatasourceDefinitionBean uniqueDataSource;
-    @EJB private DatasourceDefinitionsBean multipleDatasources;
+    @EJB
+    private DatasourceDefinitionBean uniqueDataSource;
+    @EJB
+    private DatasourceDefinitionsBean multipleDatasources;
 
-    @Module public Class<?>[] app() throws Exception {
-        return new Class<?>[]{ DatasourceDefinitionBean.class, DatasourceDefinitionsBean.class };
+    @Module
+    public Class<?>[] app() throws Exception {
+        return new Class<?>[]{DatasourceDefinitionBean.class, DatasourceDefinitionsBean.class};
     }
 
     @DataSourceDefinition(
-        name = "java:comp/env/superDS",
-        className = "org.hsqldb.jdbc.JDBCDataSource",
-        user = "sa",
-        password = "",
-        url = "jdbc:hsqldb:mem:superDS"
+            name = "java:comp/env/superDS",
+            className = "org.hsqldb.jdbc.JDBCDataSource",
+            user = "sa",
+            password = "",
+            url = "jdbc:hsqldb:mem:superDS"
     )
     @Singleton
     public static class DatasourceDefinitionBean {
-        @Resource(name = "java:comp/env/superDS") private DataSource ds;
+        @Resource(name = "java:comp/env/superDS")
+        private DataSource ds;
 
         public DataSource getDs() {
             return ds;
@@ -72,25 +75,27 @@
     }
 
     @DataSourceDefinitions({
-        @DataSourceDefinition(
-            name = "java:comp/env/superMegaDS",
-            className = "org.hsqldb.jdbc.JDBCDataSource",
-            user = "sa",
-            password = "",
-            url = "jdbc:hsqldb:mem:superDS"
-        ),
-        @DataSourceDefinition(
-            name = "java:comp/env/superGigaDS",
-            className = "org.hsqldb.jdbc.JDBCDataSource",
-            user = "sa",
-            password = "",
-            url = "jdbc:hsqldb:mem:superDS"
-        )
+            @DataSourceDefinition(
+                    name = "java:comp/env/superMegaDS",
+                    className = "org.hsqldb.jdbc.JDBCDataSource",
+                    user = "sa",
+                    password = "",
+                    url = "jdbc:hsqldb:mem:superDS"
+            ),
+            @DataSourceDefinition(
+                    name = "java:comp/env/superGigaDS",
+                    className = "org.hsqldb.jdbc.JDBCDataSource",
+                    user = "sa",
+                    password = "",
+                    url = "jdbc:hsqldb:mem:superDS"
+            )
     })
     @Stateless
     public static class DatasourceDefinitionsBean {
-        @Resource(name = "java:comp/env/superMegaDS") private DataSource mega;
-        @Resource(name = "java:comp/env/superGigaDS") private DataSource giga;
+        @Resource(name = "java:comp/env/superMegaDS")
+        private DataSource mega;
+        @Resource(name = "java:comp/env/superGigaDS")
+        private DataSource giga;
 
         public DataSource getMega() {
             return mega;
@@ -101,11 +106,13 @@
         }
     }
 
-    @Test public void assertDataSourceDefinition() throws Exception {
+    @Test
+    public void assertDataSourceDefinition() throws Exception {
         assertDataSourceDefinitionValues(uniqueDataSource.getDs(), "org.hsqldb.jdbc.JDBCDataSource", "sa", "");
     }
 
-    @Test public void assertDatasourceDefinitions() throws Exception {
+    @Test
+    public void assertDatasourceDefinitions() throws Exception {
         assertDataSourceDefinitionValues(multipleDatasources.getMega(), "org.hsqldb.jdbc.JDBCDataSource", "foo1", "bar1");
         assertDataSourceDefinitionValues(multipleDatasources.getGiga(), "org.hsqldb.jdbc.JDBCDataSource", "foo2", "bar2");
     }
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/EjbRefTest.java b/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/EjbRefTest.java
index 680c4ec..eb2c75f 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/EjbRefTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/EjbRefTest.java
@@ -18,14 +18,14 @@
 
 import junit.framework.TestCase;
 import org.apache.openejb.OpenEJBException;
-import org.apache.openejb.spi.ContainerSystem;
-import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.config.AppModule;
 import org.apache.openejb.config.ConfigurationFactory;
 import org.apache.openejb.config.EjbModule;
 import org.apache.openejb.core.ivm.naming.InitContextFactory;
 import org.apache.openejb.jee.EjbJar;
 import org.apache.openejb.jee.StatelessBean;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
 
 import javax.ejb.EJB;
 import javax.naming.InitialContext;
@@ -320,13 +320,13 @@
     }
 
 
-    public void ear(Class ... beans) throws Exception {
+    public void ear(Class... beans) throws Exception {
         EjbJar ejbJar = ejbjar(beans);
         ear(ejbJar);
     }
 
     private void ear(EjbJar... ejbJars) throws OpenEJBException, NamingException, IOException {
-        AppModule app = new AppModule(this.getClass().getClassLoader(), "classpath-"+ejbJars.hashCode());
+        AppModule app = new AppModule(this.getClass().getClassLoader(), "classpath-" + ejbJars.hashCode());
         for (EjbJar ejbJar : ejbJars) {
             app.getEjbModules().add(new EjbModule(ejbJar));
         }
@@ -466,8 +466,10 @@
     }
 
     public static class YellowGreenBean implements YellowGreen {
-        @EJB Color yellow;
-        @EJB Color green;
+        @EJB
+        Color yellow;
+        @EJB
+        Color green;
 
         public String getGreen() {
             return green.getColor();
@@ -480,6 +482,7 @@
 
     public static interface YellowGreen {
         String getYellow();
+
         String getGreen();
     }
 
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/ImportSqlScriptTest.java b/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/ImportSqlScriptTest.java
index 07b49cf..4975a99 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/ImportSqlScriptTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/ImportSqlScriptTest.java
@@ -59,7 +59,8 @@
         return bean;
     }
 
-    @Module public Persistence persistence() {
+    @Module
+    public Persistence persistence() {
         final PersistenceUnit unit = new PersistenceUnit("ImportSqlScriptTest");
         unit.addClass(Something.class);
         unit.setProperty("openjpa.RuntimeUnenhancedClasses", "supported");
@@ -90,7 +91,7 @@
     }
 
     @Test
-    public void checkImportData()  {
+    public void checkImportData() {
         assertEquals(3, persister.count());
     }
 }
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/OpenEJBXmlByModuleTest.java b/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/OpenEJBXmlByModuleTest.java
index ec07535..4eb3ad6 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/OpenEJBXmlByModuleTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/OpenEJBXmlByModuleTest.java
@@ -16,13 +16,6 @@
  */
 package org.apache.openejb.assembler.classic;
 
-import java.io.IOException;
-import java.util.Properties;
-import javax.annotation.Resource;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import javax.sql.DataSource;
 import org.apache.commons.dbcp.BasicDataSource;
 import org.apache.openejb.OpenEJB;
 import org.apache.openejb.OpenEJBException;
@@ -36,6 +29,14 @@
 import org.junit.Before;
 import org.junit.Test;
 
+import javax.annotation.Resource;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.sql.DataSource;
+import java.io.IOException;
+import java.util.Properties;
+
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertNotNull;
 import static junit.framework.Assert.assertTrue;
@@ -45,7 +46,8 @@
 
     private UselessBean bean;
 
-    @Before public void setUp() throws OpenEJBException, NamingException, IOException {
+    @Before
+    public void setUp() throws OpenEJBException, NamingException, IOException {
         ConfigurationFactory config = new ConfigurationFactory();
         Assembler assembler = new Assembler();
 
@@ -71,14 +73,16 @@
         bean = (UselessBean) context.lookup("UselessBeanLocalBean");
     }
 
-    @After public void close() throws NamingException {
+    @After
+    public void close() throws NamingException {
         if (context != null) {
             context.close();
             OpenEJB.destroy(); // has to be called manually since we start openejb in a custom way
         }
     }
 
-    @Test public void test() throws Exception {
+    @Test
+    public void test() throws Exception {
         assertNotNull(bean.datasource());
         assertTrue(bean.datasource() instanceof BasicDataSource);
         BasicDataSource ds = (BasicDataSource) bean.datasource();
@@ -96,10 +100,17 @@
     }
 
     public static class UselessBean {
-        @Resource(name = "DS") private DataSource ds;
-        @Resource(name = "My Resource", type = MyResource.class) private MyResource rs;
+        @Resource(name = "DS")
+        private DataSource ds;
+        @Resource(name = "My Resource", type = MyResource.class)
+        private MyResource rs;
 
-        public DataSource datasource() { return ds; }
-        public MyResource resource() { return rs; }
+        public DataSource datasource() {
+            return ds;
+        }
+
+        public MyResource resource() {
+            return rs;
+        }
     }
 }
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/bval/BeanValidationAppendixInterceptorTest.java b/container/openejb-core/src/test/java/org/apache/openejb/bval/BeanValidationAppendixInterceptorTest.java
index 73608a5..34343cb 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/bval/BeanValidationAppendixInterceptorTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/bval/BeanValidationAppendixInterceptorTest.java
@@ -16,16 +16,6 @@
  */

 package org.apache.openejb.bval;

 

-import java.io.Serializable;

-import java.util.Properties;

-import javax.ejb.EJB;

-import javax.ejb.Local;

-import javax.ejb.LocalBean;

-import javax.ejb.Remote;

-import javax.ejb.Stateless;

-import javax.validation.ConstraintViolationException;

-import javax.validation.constraints.Min;

-import javax.validation.constraints.NotNull;

 import org.apache.openejb.BeanContext;

 import org.apache.openejb.jee.EjbJar;

 import org.apache.openejb.jee.Empty;

@@ -36,19 +26,34 @@
 import org.junit.Test;

 import org.junit.runner.RunWith;

 

+import javax.ejb.EJB;

+import javax.ejb.Local;

+import javax.ejb.LocalBean;

+import javax.ejb.Remote;

+import javax.ejb.Stateless;

+import javax.validation.ConstraintViolationException;

+import javax.validation.constraints.Min;

+import javax.validation.constraints.NotNull;

+import java.io.Serializable;

+import java.util.Properties;

+

 import static org.junit.Assert.assertEquals;

 import static org.junit.Assert.assertTrue;

 import static org.junit.Assert.fail;

 

 @RunWith(ApplicationComposer.class)

 public class BeanValidationAppendixInterceptorTest {

-    @Local public static interface Manager {

+    @Local

+    public static interface Manager {

         String drive(Person person, @Min(18) int age);

+

         Person create(@NotNull String name);

     }

 

-    @Remote public static interface ManagerRemote {

+    @Remote

+    public static interface ManagerRemote {

         String drive(Person person, @Min(16) int age);

+

         Person create(String name);

     }

 

@@ -64,7 +69,8 @@
         }

     }

 

-    @Stateless public static class ManagerBean implements Manager {

+    @Stateless

+    public static class ManagerBean implements Manager {

         public String drive(Person person, int age) {

             return "vroom";

         }

@@ -76,7 +82,8 @@
         }

     }

 

-    @Stateless public static class ManagerBean2 implements Manager, ManagerRemote {

+    @Stateless

+    public static class ManagerBean2 implements Manager, ManagerRemote {

         public String drive(Person person, int age) {

             return "vroom";

         }

@@ -88,18 +95,22 @@
         }

     }

 

-    @Stateless @LocalBean public static class ManagerLocalBean {

+    @Stateless

+    @LocalBean

+    public static class ManagerLocalBean {

         public void foo(@NotNull String bar) {

             // no-op

         }

     }

 

-    @Test public void valid() {

+    @Test

+    public void valid() {

         Person p = mgr.create("foo");

         mgr.drive(p, 18);

     }

 

-    @Test public void notValid() {

+    @Test

+    public void notValid() {

         Person p = null;

         try {

             p = mgr.create(null);

@@ -119,13 +130,15 @@
         }

     }

 

-    @Test public void validRemote() {

+    @Test

+    public void validRemote() {

         Person p = mgrRemote.create(null);

         mgrRemote.drive(p, 26);

         mgrRemote.drive(p, 17);

     }

 

-    @Test public void notValidRemote() {

+    @Test

+    public void notValidRemote() {

         Person p = mgrRemote.create("bar");

         try {

             mgrRemote.drive(p, 15);

@@ -137,7 +150,8 @@
         }

     }

 

-    @Test public void localBean() {

+    @Test

+    public void localBean() {

         mgrLB.foo("ok");

         try {

             mgrLB.foo(null);

@@ -149,17 +163,22 @@
         }

     }

 

-    @EJB private Manager mgr;

-    @EJB private ManagerRemote mgrRemote;

-    @EJB private ManagerLocalBean mgrLB;

+    @EJB

+    private Manager mgr;

+    @EJB

+    private ManagerRemote mgrRemote;

+    @EJB

+    private ManagerLocalBean mgrLB;

 

-    @Configuration public Properties config() {

+    @Configuration

+    public Properties config() {

         final Properties p = new Properties();

         p.put(BeanContext.USER_INTERCEPTOR_KEY, BeanValidationAppendixInterceptor.class.getName());

         return p;

     }

 

-    @Module public EjbJar app() throws Exception {

+    @Module

+    public EjbJar app() throws Exception {

         EjbJar ejbJar = new EjbJar("bval-interceptor");

 

         final StatelessBean bean1 = new StatelessBean(ManagerBean.class);

diff --git a/container/openejb-core/src/test/java/org/apache/openejb/bval/BeanValidationTest.java b/container/openejb-core/src/test/java/org/apache/openejb/bval/BeanValidationTest.java
index 6323348..becea7e 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/bval/BeanValidationTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/bval/BeanValidationTest.java
@@ -53,11 +53,15 @@
 
 @RunWith(ApplicationComposer.class)
 public class BeanValidationTest {
-    @EJB private PersistManager persistManager;
-    @Resource private Validator validator;
-    @Resource private ValidatorFactory validatorFactory;
+    @EJB
+    private PersistManager persistManager;
+    @Resource
+    private Validator validator;
+    @Resource
+    private ValidatorFactory validatorFactory;
 
-    @Configuration public Properties config() {
+    @Configuration
+    public Properties config() {
         final Properties p = new Properties();
         p.put("bvalDatabase", "new://Resource?type=DataSource");
         p.put("bvalDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
@@ -65,13 +69,15 @@
         return p;
     }
 
-    @Module public StatelessBean app() throws Exception {
+    @Module
+    public StatelessBean app() throws Exception {
         final StatelessBean bean = new StatelessBean(PersistManager.class);
         bean.setLocalBean(new Empty());
         return bean;
     }
 
-    @Module public Persistence persistence() {
+    @Module
+    public Persistence persistence() {
         PersistenceUnit unit = new PersistenceUnit("foo-unit");
         unit.addClass(EntityToValidate.class);
         unit.setProperty("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=true)");
@@ -86,10 +92,13 @@
     @LocalBean
     @Stateless
     public static class PersistManager {
-        @PersistenceContext private EntityManager em;
+        @PersistenceContext
+        private EntityManager em;
 
-        @Resource private Validator validator;
-        @Resource private ValidatorFactory validatorFactory;
+        @Resource
+        private Validator validator;
+        @Resource
+        private ValidatorFactory validatorFactory;
 
         public void persistValid() {
             EntityToValidate entity = new EntityToValidate();
@@ -101,19 +110,25 @@
             em.persist(new EntityToValidate());
         }
 
-        @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) public Validator getValidator() {
+        @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
+        public Validator getValidator() {
             return validator;
         }
 
-        @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) public ValidatorFactory getValidatorFactory() {
+        @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
+        public ValidatorFactory getValidatorFactory() {
             return validatorFactory;
         }
     }
 
     @Entity
     public static class EntityToValidate {
-        @Id @GeneratedValue private long id;
-        @NotNull @Size(min = 1, max = 5) private String name;
+        @Id
+        @GeneratedValue
+        private long id;
+        @NotNull
+        @Size(min = 1, max = 5)
+        private String name;
 
         public long getId() {
             return id;
@@ -132,11 +147,13 @@
         }
     }
 
-    @Test public void valid()  {
+    @Test
+    public void valid() {
         persistManager.persistValid();
     }
 
-    @Test public void notValid()  {
+    @Test
+    public void notValid() {
         try {
             persistManager.persistNotValid();
             fail();
@@ -147,31 +164,37 @@
         }
     }
 
-    @Test public void lookupValidatorFactory() throws Exception {
+    @Test
+    public void lookupValidatorFactory() throws Exception {
         ValidatorFactory validatorFactory = (ValidatorFactory) new InitialContext().lookup("java:comp/ValidatorFactory");
         assertNotNull(validatorFactory);
     }
 
-    @Test public void lookupValidator() throws Exception {
-        Validator validator = (Validator)  new InitialContext().lookup("java:comp/Validator");
+    @Test
+    public void lookupValidator() throws Exception {
+        Validator validator = (Validator) new InitialContext().lookup("java:comp/Validator");
         assertNotNull(validator);
     }
 
-    @Test public void injectionValidatorFactory() {
+    @Test
+    public void injectionValidatorFactory() {
         ValidatorFactory validatorFactory = persistManager.getValidatorFactory();
         assertNotNull(validatorFactory);
     }
 
-    @Test public void injectionValidator() {
+    @Test
+    public void injectionValidator() {
         Validator validator = persistManager.getValidator();
         assertNotNull(validator);
     }
 
-    @Test public void injection2ValidatorFactory() {
+    @Test
+    public void injection2ValidatorFactory() {
         assertNotNull(validatorFactory);
     }
 
-    @Test public void injection2Validator() {
+    @Test
+    public void injection2Validator() {
         assertNotNull(validator);
     }
 }
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/cdi/AbstractCDIInjectionTest.java b/container/openejb-core/src/test/java/org/apache/openejb/cdi/AbstractCDIInjectionTest.java
index 655f26c..56ff116 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/cdi/AbstractCDIInjectionTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/cdi/AbstractCDIInjectionTest.java
@@ -16,8 +16,6 @@
  */
 package org.apache.openejb.cdi;
 
-import javax.ejb.Stateless;
-import javax.inject.Inject;
 import org.apache.openejb.config.EjbModule;
 import org.apache.openejb.jee.Beans;
 import org.apache.openejb.jee.EjbJar;
@@ -28,14 +26,19 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import javax.ejb.Stateless;
+import javax.inject.Inject;
+
 import static junit.framework.Assert.assertTrue;
 
 @RunWith(ApplicationComposer.class)
 public class AbstractCDIInjectionTest {
-    @Inject private AppCDI cdi;
 
+    @Inject
+    private AppCDI cdi;
 
-    @Module public EjbModule app() throws Exception {
+    @Module
+    public EjbModule app() throws Exception {
         final StatelessBean bean = new StatelessBean(AppJpaDAO.class);
         bean.setLocalBean(new Empty());
 
@@ -56,12 +59,15 @@
         return jar;
     }
 
-    public static abstract class PlcBaseDAO {}
+    public static abstract class PlcBaseDAO {
+    }
 
-    public static abstract class PlcBaseJpaDAO extends PlcBaseDAO {}
+    public static abstract class PlcBaseJpaDAO extends PlcBaseDAO {
+    }
 
     @Stateless
-    public static class AppJpaDAO extends PlcBaseJpaDAO {}
+    public static class AppJpaDAO extends PlcBaseJpaDAO {
+    }
 
     public static class AppCDI {
         @Inject
@@ -72,7 +78,8 @@
         }
     }
 
-    @Test public void valid()  {
+    @Test
+    public void valid() {
         assertTrue(cdi.ok());
     }
 }
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/cdi/AbstractInjectionTest.java b/container/openejb-core/src/test/java/org/apache/openejb/cdi/AbstractInjectionTest.java
index 2372e97..b4c38e7 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/cdi/AbstractInjectionTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/cdi/AbstractInjectionTest.java
@@ -16,8 +16,6 @@
  */
 package org.apache.openejb.cdi;
 
-import javax.ejb.EJB;
-import javax.ejb.Stateless;
 import org.apache.openejb.config.EjbModule;
 import org.apache.openejb.jee.Beans;
 import org.apache.openejb.jee.EjbJar;
@@ -28,14 +26,19 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+
 import static junit.framework.Assert.assertTrue;
 
 @RunWith(ApplicationComposer.class)
 public class AbstractInjectionTest {
-    @EJB private AppCDI cdi;
 
+    @EJB
+    private AppCDI cdi;
 
-    @Module public EjbModule app() throws Exception {
+    @Module
+    public EjbModule app() throws Exception {
         final StatelessBean bean = new StatelessBean(AppJpaDAO.class);
         bean.setLocalBean(new Empty());
 
@@ -56,12 +59,15 @@
         return jar;
     }
 
-    public static abstract class PlcBaseDAO {}
+    public static abstract class PlcBaseDAO {
+    }
 
-    public static abstract class PlcBaseJpaDAO extends PlcBaseDAO {}
+    public static abstract class PlcBaseJpaDAO extends PlcBaseDAO {
+    }
 
     @Stateless
-    public static class AppJpaDAO extends PlcBaseJpaDAO {}
+    public static class AppJpaDAO extends PlcBaseJpaDAO {
+    }
 
     public static class AppCDI {
         @EJB
@@ -72,7 +78,8 @@
         }
     }
 
-    @Test public void valid()  {
+    @Test
+    public void valid() {
         assertTrue(cdi.ok());
     }
 }
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/config/AutoConfigPersistenceUnitsTest.java b/container/openejb-core/src/test/java/org/apache/openejb/config/AutoConfigPersistenceUnitsTest.java
index b5eb519..3900d91 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/config/AutoConfigPersistenceUnitsTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/config/AutoConfigPersistenceUnitsTest.java
@@ -70,7 +70,8 @@
         resources = configuration.facilities.resources;
     }
 
-    @Override public void tearDown() {
+    @Override
+    public void tearDown() {
         System.getProperties().remove(LocalMBeanServer.OPENEJB_JMX_ACTIVE);
     }
 
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/config/AutoConfigResourceRefsTest.java b/container/openejb-core/src/test/java/org/apache/openejb/config/AutoConfigResourceRefsTest.java
index 6b59fb9..4295db6b 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/config/AutoConfigResourceRefsTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/config/AutoConfigResourceRefsTest.java
@@ -128,12 +128,18 @@
 
     public static class WidgetBean implements Widget {
 
-        @Resource javax.jms.Queue redQueue;
-        @Resource javax.jms.Queue blueQueue;
-        @Resource javax.jms.Queue greenQueue;
+        @Resource
+        javax.jms.Queue redQueue;
+        @Resource
+        javax.jms.Queue blueQueue;
+        @Resource
+        javax.jms.Queue greenQueue;
 
-        @Resource javax.sql.DataSource yellowDataSource;
-        @Resource javax.sql.DataSource orangeDataSource;
-        @Resource javax.sql.DataSource purpleDataSource;
+        @Resource
+        javax.sql.DataSource yellowDataSource;
+        @Resource
+        javax.sql.DataSource orangeDataSource;
+        @Resource
+        javax.sql.DataSource purpleDataSource;
     }
 }
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/config/AutoDeployerTest.java b/container/openejb-core/src/test/java/org/apache/openejb/config/AutoDeployerTest.java
new file mode 100644
index 0000000..31871f1
--- /dev/null
+++ b/container/openejb-core/src/test/java/org/apache/openejb/config/AutoDeployerTest.java
@@ -0,0 +1,256 @@
+/*
+ * 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.openejb.config;
+
+import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.assembler.classic.OpenEjbConfiguration;
+import org.apache.openejb.config.ConfigurationFactory;
+import org.apache.openejb.loader.Files;
+import org.apache.openejb.loader.IO;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.util.Archives;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.ejb.Singleton;
+import javax.ejb.Startup;
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.locks.Condition;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class AutoDeployerTest extends Assert {
+    @Before
+    @After
+    public void stopAutoDeployer() {
+        final AutoDeployer autoDeployer = SystemInstance.get().getComponent(AutoDeployer.class);
+        if (autoDeployer != null) {
+            autoDeployer.stop();
+        }
+        SystemInstance.reset();
+    }
+
+    @Test
+    public void test() throws Exception {
+        final File tmpdir = Files.tmpdir();
+        final File apps = Files.mkdir(tmpdir, "myapps");
+        final File conf = Files.mkdir(tmpdir, "conf");
+
+        final Properties properties = new Properties();
+        properties.setProperty("openejb.deployments.classpath", "false");
+        properties.setProperty("openejb.deployment.unpack.location", "false");
+        properties.setProperty("openejb.home", tmpdir.getAbsolutePath());
+        properties.setProperty("openejb.base", tmpdir.getAbsolutePath());
+
+        SystemInstance.init(properties);
+
+        { // Setup the configuration location
+            final File config = new File(conf, "openejb.xml");
+            IO.writeString(config, "<openejb><Deployments autoDeploy=\"true\" dir=\"myapps\"/> </openejb>");
+            SystemInstance.get().setProperty("openejb.configuration", config.getAbsolutePath());
+        }
+
+        final ConfigurationFactory configurationFactory = new ConfigurationFactory();
+        configurationFactory.init(properties);
+        final OpenEjbConfiguration configuration = configurationFactory.getOpenEjbConfiguration();
+
+        { // Check the ContainerSystemInfo
+
+            final List<String> autoDeploy = configuration.containerSystem.autoDeploy;
+            assertEquals(1, autoDeploy.size());
+            assertEquals("myapps", autoDeploy.get(0));
+        }
+
+        final Assembler assembler = new Assembler();
+        assembler.buildContainerSystem(configuration);
+
+        /// start with the testing...
+
+        assertFalse(Yellow.deployed);
+        assertFalse(Orange.deployed);
+
+        final File deployed = Files.path(apps, "colors.ear");
+
+        // Hot deploy the EAR
+        final File ear = createEar(tmpdir, Orange.class, State.class);
+        IO.copy(ear, deployed);
+
+        Orange.state.waitForChange(1, TimeUnit.MINUTES);
+
+        assertFalse(Yellow.deployed);
+        assertTrue(Orange.deployed);
+
+        Files.delete(deployed);
+
+        Orange.state.waitForChange(1, TimeUnit.MINUTES);
+
+        assertFalse(Yellow.deployed);
+        assertFalse(Orange.deployed);
+    }
+
+    @Test
+    public void testAltUnpackDir() throws Exception {
+        final File tmpdir = Files.tmpdir();
+        final File apps = Files.mkdir(tmpdir, "myapps");
+        final File conf = Files.mkdir(tmpdir, "conf");
+
+        final Properties properties = new Properties();
+        properties.setProperty("openejb.deployments.classpath", "false");
+        properties.setProperty("tomee.unpack.dir", "work");
+        properties.setProperty("openejb.home", tmpdir.getAbsolutePath());
+        properties.setProperty("openejb.base", tmpdir.getAbsolutePath());
+
+        SystemInstance.init(properties);
+
+        { // Setup the configuration location
+            final File config = new File(conf, "openejb.xml");
+            IO.writeString(config, "<openejb><Deployments autoDeploy=\"true\" dir=\"myapps\"/> </openejb>");
+            SystemInstance.get().setProperty("openejb.configuration", config.getAbsolutePath());
+        }
+
+        final ConfigurationFactory configurationFactory = new ConfigurationFactory();
+        configurationFactory.init(properties);
+        final OpenEjbConfiguration configuration = configurationFactory.getOpenEjbConfiguration();
+
+        { // Check the ContainerSystemInfo
+
+            final List<String> autoDeploy = configuration.containerSystem.autoDeploy;
+            assertEquals(1, autoDeploy.size());
+            assertEquals("myapps", autoDeploy.get(0));
+        }
+
+        final Assembler assembler = new Assembler();
+        assembler.buildContainerSystem(configuration);
+
+        /// start with the testing...
+
+        assertFalse(Yellow.deployed);
+        assertFalse(Orange.deployed);
+
+        final File deployed = Files.path(apps, "colors.ear");
+        deployed.deleteOnExit();
+
+        // Hot deploy the EAR
+        final File ear = createEar(tmpdir, Orange.class, State.class);
+        ear.deleteOnExit();
+        IO.copy(ear, deployed);
+        assertTrue(deployed.exists());
+
+        Orange.state.waitForChange(1, TimeUnit.MINUTES);
+
+        assertFalse(Yellow.deployed);
+        assertTrue(Orange.deployed);
+
+        Files.delete(deployed);
+
+        Orange.state.waitForChange(1, TimeUnit.MINUTES);
+
+        assertFalse(Yellow.deployed);
+        assertFalse(Orange.deployed);
+    }
+
+    private File createEar(File tmpdir, final Class<?>... aClass) throws IOException {
+        final File ear = new File(tmpdir, "colors.ear");
+        final Map<String, Object> contents = new HashMap<String, Object>();
+        contents.put("foo.jar", Archives.jarArchive(aClass));
+        Archives.jarArchive(ear, contents);
+        return ear;
+    }
+
+    public static class State {
+        private volatile boolean b;
+        private final Lock lock = new ReentrantLock();
+        private final Condition condition = lock.newCondition();
+
+        public void toggle() {
+            lock.lock();
+            try {
+                b = !b;
+                condition.signal();
+            } finally {
+                lock.unlock();
+            }
+        }
+
+        public boolean get() {
+            return b;
+        }
+
+        public void waitForChange(long time, TimeUnit unit) {
+            lock.lock();
+            try {
+                condition.await(time, unit);
+            } catch (InterruptedException e) {
+                Thread.interrupted();
+            } finally {
+                lock.unlock();
+            }
+
+        }
+    }
+
+    @Singleton
+    @Startup
+    public static class Orange {
+
+        public static volatile boolean deployed;
+        public static final State state = new State();
+
+        @PostConstruct
+        private void startup() {
+            deployed = true;
+            state.toggle();
+        }
+
+        @PreDestroy
+        private void shutdown() {
+            deployed = false;
+            state.toggle();
+        }
+    }
+
+    @Singleton
+    @Startup
+    public static class Yellow {
+
+        public static volatile boolean deployed;
+
+        @PostConstruct
+        private void startup() {
+            deployed = true;
+        }
+
+        @PreDestroy
+        private void shutdown() {
+            deployed = false;
+        }
+    }
+}
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/config/CheckDescriptorLocationTestFileDeletionHelper.java b/container/openejb-core/src/test/java/org/apache/openejb/config/CheckDescriptorLocationTestFileDeletionHelper.java
index 8e18e19..26a0612 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/config/CheckDescriptorLocationTestFileDeletionHelper.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/config/CheckDescriptorLocationTestFileDeletionHelper.java
@@ -29,30 +29,30 @@
 
     @Test
     public void deleteFile() {
-        File fileLocation = new File(System.getProperty("java.io.tmpdir"));
+        final File fileLocation = new File(System.getProperty("java.io.tmpdir"));
         assertTrue(fileLocation.isDirectory());
         final File[] list = fileLocation.listFiles();
-        List<File> asList = null;
+        final List<File> asList;
         if (list != null) {
             asList = Arrays.asList(list);
-        } else{
+        } else {
             asList = new ArrayList<File>();
         }
         deleteTestCreatedFiles(asList);
 
     }
 
-    private void deleteTestCreatedFiles(List<File> asList) {
-        for (File file : asList) {
+    private void deleteTestCreatedFiles(final List<File> asList) {
+        for (final File file : asList) {
             deleteOrMarkForDelete(file);
         }
     }
 
-    private void deleteOrMarkForDelete(File file) {
+    private void deleteOrMarkForDelete(final File file) {
         if (file.getName().contains(
                 CheckDescriptorLocationTest.FILENAME_PREFIX)) {
 
-            boolean deleted = file.delete();
+            final boolean deleted = file.delete();
             if (!deleted) {
                 file.deleteOnExit();
             }
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/config/DeploymentsElementTest.java b/container/openejb-core/src/test/java/org/apache/openejb/config/DeploymentsElementTest.java
new file mode 100644
index 0000000..98d3564
--- /dev/null
+++ b/container/openejb-core/src/test/java/org/apache/openejb/config/DeploymentsElementTest.java
@@ -0,0 +1,658 @@
+/*
+ * 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.openejb.config;
+
+import org.apache.openejb.assembler.classic.AppInfo;
+import org.apache.openejb.assembler.classic.OpenEjbConfiguration;
+import org.apache.openejb.config.sys.Deployments;
+import org.apache.openejb.config.sys.JaxbOpenejb;
+import org.apache.openejb.config.sys.Openejb;
+import org.apache.openejb.loader.Files;
+import org.apache.openejb.loader.IO;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.loader.Zips;
+import org.apache.openejb.util.Archives;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+import javax.ejb.Singleton;
+import javax.ejb.Startup;
+import java.io.File;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+/**
+ * If an app exists in the apps/ directory in both the
+ * packed and unpacked states, only deploy the app once
+ *
+ * Do not treat this as two applications and deploy each one separately.
+ *
+ * @version $Rev$ $Date$
+ */
+public class DeploymentsElementTest extends Assert {
+
+    @Rule
+    public final ExpectedException exceptions = ExpectedException.none();
+
+    /**
+     * <Deployments dir="myapps"/>
+     *
+     * EAR file not extracted
+     * Application.xml
+     *
+     * @throws Exception
+     */
+    @Test
+    public void deploymentsDir_Ear_Packed_ApplicationXml() throws Exception {
+        final Server server = new Server();
+        final File apps = server.deploymentsDir("myapps");
+
+        final File ear = new File(apps, "colors.ear");
+        {
+            final Map<String, Object> contents = new HashMap<String, Object>();
+            contents.put("foo.jar", Archives.jarArchive(Orange.class));
+            contents.put("META-INF/application.xml", "<application><module><ejb>foo.jar</ejb></module></application>");
+            Archives.jarArchive(ear, contents);
+        }
+
+        final OpenEjbConfiguration configuration = server.init();
+
+        assertEquals(1, configuration.containerSystem.applications.size());
+        assertEquals(1, configuration.containerSystem.applications.get(0).ejbJars.size());
+        assertEquals(1, configuration.containerSystem.applications.get(0).ejbJars.get(0).enterpriseBeans.size());
+        assertEquals("Orange", configuration.containerSystem.applications.get(0).ejbJars.get(0).enterpriseBeans.get(0).ejbName);
+    }
+
+    /**
+     * <Deployments dir="myapps"/>
+     *
+     * EAR file not extracted
+     *
+     * @throws Exception
+     */
+    @Test
+    public void deploymentsDir_Ear_Packed_NoApplicationXml() throws Exception {
+        final Server server = new Server();
+        final File apps = server.deploymentsDir("myapps");
+
+        final File ear = new File(apps, "colors.ear");
+        {
+            final Map<String, Object> contents = new HashMap<String, Object>();
+            contents.put("foo.jar", Archives.jarArchive(Orange.class));
+            Archives.jarArchive(ear, contents);
+        }
+
+        final OpenEjbConfiguration configuration = server.init();
+
+        assertEquals(1, configuration.containerSystem.applications.size());
+        assertEquals(1, configuration.containerSystem.applications.get(0).ejbJars.size());
+        assertEquals(1, configuration.containerSystem.applications.get(0).ejbJars.get(0).enterpriseBeans.size());
+        assertEquals("Orange", configuration.containerSystem.applications.get(0).ejbJars.get(0).enterpriseBeans.get(0).ejbName);
+    }
+
+    /**
+     * <Deployments dir="myapps"/>
+     *
+     * EAR file extracted
+     * Application.xml
+     *
+     * @throws Exception
+     */
+    @Test
+    public void deploymentsDir_Ear_Unpacked_ApplicationXml() throws Exception {
+        final Server server = new Server();
+        final File apps = server.deploymentsDir("myapps");
+
+        final File ear = new File(server.getBase(), "colors.ear");
+        {
+            final Map<String, Object> contents = new HashMap<String, Object>();
+            contents.put("foo.jar", Archives.jarArchive(Orange.class));
+            contents.put("META-INF/application.xml", "<application><module><ejb>foo.jar</ejb></module></application>");
+            Archives.jarArchive(ear, contents);
+        }
+
+        Zips.unzip(ear, Files.mkdir(apps, "colors"));
+
+        final OpenEjbConfiguration configuration = server.init();
+
+        assertEquals(1, configuration.containerSystem.applications.size());
+        assertEquals(1, configuration.containerSystem.applications.get(0).ejbJars.size());
+        assertEquals(1, configuration.containerSystem.applications.get(0).ejbJars.get(0).enterpriseBeans.size());
+        assertEquals("Orange", configuration.containerSystem.applications.get(0).ejbJars.get(0).enterpriseBeans.get(0).ejbName);
+    }
+
+    /**
+     * <Deployments dir="myapps"/>
+     *
+     * EAR file extracted
+     *
+     * @throws Exception
+     */
+    @Test
+    public void deploymentsDir_Ear_Unpacked_NoApplicationXml() throws Exception {
+        final Server server = new Server();
+        final File apps = server.deploymentsDir("myapps");
+
+        final File ear = new File(server.getBase(), "colors.ear");
+        {
+            final Map<String, Object> contents = new HashMap<String, Object>();
+            contents.put("foo.jar", Archives.jarArchive(Orange.class));
+            Archives.jarArchive(ear, contents);
+        }
+
+        Zips.unzip(ear, Files.mkdir(apps, "colors"));
+
+        final OpenEjbConfiguration configuration = server.init();
+
+        assertEquals(1, configuration.containerSystem.applications.size());
+        assertEquals(1, configuration.containerSystem.applications.get(0).ejbJars.size());
+        assertEquals(1, configuration.containerSystem.applications.get(0).ejbJars.get(0).enterpriseBeans.size());
+        assertEquals("Orange", configuration.containerSystem.applications.get(0).ejbJars.get(0).enterpriseBeans.get(0).ejbName);
+    }
+
+    /**
+     * <Deployments dir="myapps"/>
+     *
+     * EAR file packed
+     * EAR file extracted
+     * Application.xml
+     *
+     * @throws Exception
+     */
+    @Test
+    public void deploymentsDir_Ear_Packed_Unpacked_ApplicationXml() throws Exception {
+        final Server server = new Server();
+        final File apps = server.deploymentsDir("myapps");
+
+        final File ear = new File(server.getBase(), "colors.ear");
+        {
+            final Map<String, Object> contents = new HashMap<String, Object>();
+            contents.put("foo.jar", Archives.jarArchive(Orange.class));
+            contents.put("META-INF/application.xml", "<application><module><ejb>foo.jar</ejb></module></application>");
+            Archives.jarArchive(ear, contents);
+        }
+
+        IO.copy(ear, Files.path(apps, "colors.ear"));  // packed
+        Zips.unzip(ear, Files.mkdir(apps, "colors"));  // unpacked
+
+        final OpenEjbConfiguration configuration = server.init();
+
+        assertEquals(1, configuration.containerSystem.applications.size());
+        assertEquals(1, configuration.containerSystem.applications.get(0).ejbJars.size());
+        assertEquals(1, configuration.containerSystem.applications.get(0).ejbJars.get(0).enterpriseBeans.size());
+        assertEquals("Orange", configuration.containerSystem.applications.get(0).ejbJars.get(0).enterpriseBeans.get(0).ejbName);
+    }
+
+    /**
+     * <Deployments dir="myapps"/>
+     *
+     * EAR file packed
+     * EAR file extracted
+     *
+     * @throws Exception
+     */
+    @Test
+    public void deploymentsDir_Ear_Packed_Unpacked_NoApplicationXml() throws Exception {
+        final Server server = new Server();
+        final File apps = server.deploymentsDir("myapps");
+
+        final File ear = new File(server.getBase(), "colors.ear");
+        {
+            final Map<String, Object> contents = new HashMap<String, Object>();
+            contents.put("foo.jar", Archives.jarArchive(Orange.class));
+            Archives.jarArchive(ear, contents);
+        }
+
+        IO.copy(ear, Files.path(apps, "colors.ear"));  // packed
+        Zips.unzip(ear, Files.mkdir(apps, "colors"));  // unpacked
+
+        final OpenEjbConfiguration configuration = server.init();
+
+        assertEquals(1, configuration.containerSystem.applications.size());
+        assertEquals(1, configuration.containerSystem.applications.get(0).ejbJars.size());
+        assertEquals(1, configuration.containerSystem.applications.get(0).ejbJars.get(0).enterpriseBeans.size());
+        assertEquals("Orange", configuration.containerSystem.applications.get(0).ejbJars.get(0).enterpriseBeans.get(0).ejbName);
+    }
+
+    /**
+     * <Deployments dir="myapps"/>
+     *
+     * EAR file packed
+     * EAR file extracted
+     *
+     * The packed version is newer and an updated version of the packed version
+     * We should remove the extracted version and unpack the newer ear
+     *
+     * @throws Exception
+     */
+    @Test
+    public void deploymentsDir_Ear_Packed_Unpacked_Modified() throws Exception {
+        final Server server = new Server();
+        final File apps = server.deploymentsDir("myapps");
+
+        { // Unpacked version -- Orange
+
+            final File ear = new File(server.getBase(), "colors.ear");
+            final Map<String, Object> contents = new HashMap<String, Object>();
+            contents.put("foo.jar", Archives.jarArchive(Orange.class));
+            contents.put("META-INF/application.xml", "<application><module><ejb>foo.jar</ejb></module></application>");
+            Archives.jarArchive(ear, contents);
+            Zips.unzip(ear, Files.mkdir(apps, "colors"));  // unpacked
+        }
+
+        Thread.sleep(100);
+
+        { // Packed version -- Yellow
+
+            final File ear = new File(server.getBase(), "colors.ear");
+            final Map<String, Object> contents = new HashMap<String, Object>();
+            contents.put("foo.jar", Archives.jarArchive(Yellow.class));
+            contents.put("META-INF/application.xml", "<application><module><ejb>foo.jar</ejb></module></application>");
+            Archives.jarArchive(ear, contents);
+            Zips.unzip(ear, Files.mkdir(apps, "colors"));  // unpacked
+        }
+
+        final OpenEjbConfiguration configuration = server.init();
+
+        assertEquals(1, configuration.containerSystem.applications.size());
+        assertEquals(1, configuration.containerSystem.applications.get(0).ejbJars.size());
+        assertEquals(1, configuration.containerSystem.applications.get(0).ejbJars.get(0).enterpriseBeans.size());
+        assertEquals("Yellow", configuration.containerSystem.applications.get(0).ejbJars.get(0).enterpriseBeans.get(0).ejbName);
+    }
+
+    /**
+     * <Deployments dir="myapps"/>
+     *
+     * Two ejb jars
+     *
+     * @throws Exception
+     */
+    @Test
+    public void deploymentsDir_Jars_Packed() throws Exception {
+        final Server server = new Server();
+        final File apps = server.deploymentsDir("myapps");
+
+        { // Jar one
+            final File ear = new File(apps, "yellow.jar");
+            Archives.jarArchive(ear, null, Yellow.class);
+        }
+
+        { // Jar two
+            final File ear = new File(apps, "orange.jar");
+            Archives.jarArchive(ear, null, Orange.class);
+        }
+
+        final OpenEjbConfiguration configuration = server.init();
+
+        assertEquals(2, configuration.containerSystem.applications.size());
+
+        final AppInfo yellow = select(configuration.containerSystem.applications, "yellow");
+        assertEquals(1, yellow.ejbJars.size());
+        assertEquals(1, yellow.ejbJars.get(0).enterpriseBeans.size());
+        assertEquals("Yellow", yellow.ejbJars.get(0).enterpriseBeans.get(0).ejbName);
+
+        final AppInfo orange = select(configuration.containerSystem.applications, "orange");
+        assertEquals(1, orange.ejbJars.size());
+        assertEquals(1, orange.ejbJars.get(0).enterpriseBeans.size());
+        assertEquals("Orange", orange.ejbJars.get(0).enterpriseBeans.get(0).ejbName);
+    }
+
+    /**
+     * <Deployments dir="myapps"/>
+     *
+     * Two ejb jars
+     *
+     * Order should be guaranteed to be the same as
+     * they are declared in the openejb.xml
+     *
+     * To test, the jars are named intentionally in an order
+     * that would naturally sort to be the reverse.
+     *
+     * @throws Exception
+     */
+    @Test
+    public void deploymentsFile_Jars_Order() throws Exception {
+        final Server server = new Server();
+
+        { // Jar one
+            final File jar = server.deploymentsFile("2000.jar");
+            Archives.jarArchive(jar, null, Yellow.class);
+        }
+
+        { // Jar two
+            final File jar = server.deploymentsFile("1000.jar");
+            Archives.jarArchive(jar, null, Orange.class);
+        }
+
+        final OpenEjbConfiguration configuration = server.init();
+
+        assertEquals(2, configuration.containerSystem.applications.size());
+        assertEquals("2000", configuration.containerSystem.applications.get(0).appId);
+        assertEquals("1000", configuration.containerSystem.applications.get(1).appId);
+
+        final AppInfo yellow = configuration.containerSystem.applications.get(0);
+        assertEquals(1, yellow.ejbJars.size());
+        assertEquals(1, yellow.ejbJars.get(0).enterpriseBeans.size());
+        assertEquals("Yellow", yellow.ejbJars.get(0).enterpriseBeans.get(0).ejbName);
+
+        final AppInfo orange = configuration.containerSystem.applications.get(1);
+        assertEquals(1, orange.ejbJars.size());
+        assertEquals(1, orange.ejbJars.get(0).enterpriseBeans.size());
+        assertEquals("Orange", orange.ejbJars.get(0).enterpriseBeans.get(0).ejbName);
+    }
+
+    /**
+     * <Deployments dir="myapps/2000.jar"/>
+     * <Deployments dir="myapps"/>
+     *
+     * Order should be guaranteed to be the same as
+     * they are declared in the openejb.xml
+     *
+     * To test, the jars are named intentionally in an order
+     * that would naturally sort to be the reverse.
+     *
+     * @throws Exception
+     */
+    @Test
+    public void deploymentsFile_and_Dir_Jars_Order() throws Exception {
+        final Server server = new Server();
+
+        final File apps = Files.mkdir(server.getBase(), "myapps");
+
+        { // Jar one
+            final File jar = server.deploymentsFile("myapps/2000.jar");
+            Archives.jarArchive(jar, null, Yellow.class);
+        }
+
+        { // Jar two
+            server.deploymentsDir("myapps");
+
+            final File jar = Files.path(apps, "1000.jar");
+            Archives.jarArchive(jar, null, Orange.class);
+        }
+
+        final OpenEjbConfiguration configuration = server.init();
+
+        assertEquals(2, configuration.containerSystem.applications.size());
+        assertEquals("2000", configuration.containerSystem.applications.get(0).appId);
+        assertEquals("1000", configuration.containerSystem.applications.get(1).appId);
+
+        final AppInfo yellow = configuration.containerSystem.applications.get(0);
+        assertEquals(1, yellow.ejbJars.size());
+        assertEquals(1, yellow.ejbJars.get(0).enterpriseBeans.size());
+        assertEquals("Yellow", yellow.ejbJars.get(0).enterpriseBeans.get(0).ejbName);
+
+        final AppInfo orange = configuration.containerSystem.applications.get(1);
+        assertEquals(1, orange.ejbJars.size());
+        assertEquals(1, orange.ejbJars.get(0).enterpriseBeans.size());
+        assertEquals("Orange", orange.ejbJars.get(0).enterpriseBeans.get(0).ejbName);
+    }
+
+    /**
+     * <Deployments dir="myapps/2000.jar"/>
+     * <Deployments dir="myapps/2000.jar"/>
+     * <Deployments dir="myapps"/>
+     * <Deployments dir="myapps"/>
+     *
+     * Order should be guaranteed to be the same as
+     * they are declared in the openejb.xml
+     *
+     * To test, the jars are named intentionally in an order
+     * that would naturally sort to be the reverse.
+     *
+     * @throws Exception
+     */
+    @Test
+    public void deployments_Duplicates() throws Exception {
+        final Server server = new Server();
+
+        final File apps = Files.mkdir(server.getBase(), "myapps");
+
+        { // Jar one
+            final File jar = server.deploymentsFile("myapps/2000.jar");
+            server.deploymentsFile("myapps/2000.jar");
+            Archives.jarArchive(jar, null, Yellow.class);
+        }
+
+        { // Jar two
+            server.deploymentsDir("myapps");
+            server.deploymentsDir("myapps");
+
+            final File jar = Files.path(apps, "1000.jar");
+            Archives.jarArchive(jar, null, Orange.class);
+        }
+
+        final OpenEjbConfiguration configuration = server.init();
+
+        assertEquals(2, configuration.containerSystem.applications.size());
+        assertEquals("2000", configuration.containerSystem.applications.get(0).appId);
+        assertEquals("1000", configuration.containerSystem.applications.get(1).appId);
+
+        final AppInfo yellow = configuration.containerSystem.applications.get(0);
+        assertEquals(1, yellow.ejbJars.size());
+        assertEquals(1, yellow.ejbJars.get(0).enterpriseBeans.size());
+        assertEquals("Yellow", yellow.ejbJars.get(0).enterpriseBeans.get(0).ejbName);
+
+        final AppInfo orange = configuration.containerSystem.applications.get(1);
+        assertEquals(1, orange.ejbJars.size());
+        assertEquals(1, orange.ejbJars.get(0).enterpriseBeans.size());
+        assertEquals("Orange", orange.ejbJars.get(0).enterpriseBeans.get(0).ejbName);
+    }
+
+    /**
+     * We do not treat this as a failure case due to backwards compatibility
+     *
+     * @throws Exception
+     */
+    @Test
+    public void invalidDir_doesNotExist() throws Exception {
+        final Server server = new Server();
+
+        final File dir = server.deploymentsDir("myapps");
+        Files.delete(dir);
+
+        final OpenEjbConfiguration configuration = server.init();
+
+        assertEquals(0, configuration.containerSystem.applications.size());
+    }
+
+    @Test
+    public void invalidDir_notADirectory() throws Exception {
+        exceptions.expect(RuntimeException.class);
+        exceptions.expectMessage("Deployments dir=");
+        exceptions.expectMessage("Not a directory");
+        exceptions.expectMessage("myapps");
+
+        final Server server = new Server();
+
+        final File dir = server.deploymentsDir("myapps");
+
+        // turn the directory into a file
+        Files.delete(dir);
+        assertTrue(dir.createNewFile());
+
+        server.init();
+    }
+
+    @Test
+    public void invalidDir_notReadable() throws Exception {
+        exceptions.expect(RuntimeException.class);
+        exceptions.expectMessage("Deployments dir=");
+        exceptions.expectMessage("Not readable");
+        exceptions.expectMessage("myapps");
+        final Server server = new Server();
+
+        final File dir = server.deploymentsDir("myapps");
+        assertTrue(dir.setReadable(false));
+
+        final OpenEjbConfiguration configuration = server.init();
+
+        assertEquals(0, configuration.containerSystem.applications.size());
+    }
+
+    @Test
+    public void invalidFile_notAFile() throws Exception {
+        exceptions.expect(RuntimeException.class);
+        exceptions.expectMessage("Deployments file=");
+        exceptions.expectMessage("Not a file");
+        exceptions.expectMessage("myapp.jar");
+
+        final Server server = new Server();
+
+        final File file = server.deploymentsFile("myapp.jar");
+        Files.delete(file);
+        Files.mkdir(file);
+
+        final OpenEjbConfiguration configuration = server.init();
+
+        assertEquals(0, configuration.containerSystem.applications.size());
+    }
+
+    @Test
+    public void invalidFile_doesNotExist() throws Exception {
+        exceptions.expect(RuntimeException.class);
+        exceptions.expectMessage("Deployments file=");
+        exceptions.expectMessage("not exist");
+        exceptions.expectMessage("myapp.jar");
+
+        final Server server = new Server();
+
+        final File file = server.deploymentsFile("myapp.jar");
+        Files.delete(file);
+
+        final OpenEjbConfiguration configuration = server.init();
+
+        assertEquals(0, configuration.containerSystem.applications.size());
+    }
+
+    @Test
+    public void invalidFile_notReadable() throws Exception {
+        exceptions.expect(RuntimeException.class);
+        exceptions.expectMessage("Deployments file=");
+        exceptions.expectMessage("Not readable");
+        exceptions.expectMessage("myapp.jar");
+
+        final Server server = new Server();
+
+        final File file = server.deploymentsFile("myapp.jar");
+        assertTrue(file.createNewFile());
+        assertTrue(file.setReadable(false));
+
+        final OpenEjbConfiguration configuration = server.init();
+
+        assertEquals(0, configuration.containerSystem.applications.size());
+    }
+
+    /**
+     * If something is in the process of being deployed, do not try to autoDeploy it
+     *
+     * @throws Exception
+     */
+    @Test @Ignore
+    public void alreadyInDeployProcess() throws Exception {
+
+    }
+
+    public AppInfo select(List<AppInfo> appInfos, String id) {
+        for (AppInfo appInfo : appInfos) {
+            if (id.equals(appInfo.appId)) {
+                return appInfo;
+            }
+        }
+
+        throw new RuntimeException("No AppInfo with id: " + id);
+    }
+
+
+    @Before
+    public void after() {
+        SystemInstance.reset();
+    }
+
+    @Singleton
+    @Startup
+    public static class Orange {
+    }
+
+    @Singleton
+    @Startup
+    public static class Yellow {
+    }
+
+    private class Server {
+        private final File base;
+        private final Properties properties;
+        private final Openejb openejb = new Openejb();
+        private final File configFile;
+
+        private Server() {
+            base = Files.tmpdir();
+
+            final File conf = Files.mkdir(base, "conf");
+
+            properties = new Properties();
+            properties.setProperty("openejb.deployments.classpath", "false");
+            properties.setProperty("openejb.home", base.getAbsolutePath());
+            properties.setProperty("openejb.base", base.getAbsolutePath());
+
+            configFile = new File(conf, "openejb.xml");
+
+            properties.setProperty("openejb.configuration", configFile.getAbsolutePath());
+        }
+
+
+        public OpenEjbConfiguration init() throws Exception {
+            try {
+                IO.writeString(configFile, JaxbOpenejb.marshal(Openejb.class, openejb));
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+
+            SystemInstance.init(properties);
+
+            final ConfigurationFactory configurationFactory = new ConfigurationFactory();
+            configurationFactory.init(properties);
+
+            return configurationFactory.getOpenEjbConfiguration();
+        }
+
+        public File getBase() {
+            return base;
+        }
+
+        public Properties getProperties() {
+            return properties;
+        }
+
+        public File deploymentsDir(String dir) {
+            openejb.getDeployments().add(new Deployments().dir(dir));
+            return Files.mkdir(base, dir);
+        }
+
+        public File deploymentsFile(String file) {
+            openejb.getDeployments().add(new Deployments().file(file));
+            return Files.path(base, file);
+        }
+    }
+}
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/config/rules/CheckTowManyInterfaceTest.java b/container/openejb-core/src/test/java/org/apache/openejb/config/rules/CheckTowManyInterfaceTest.java
index 7b9ae40..90ee930 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/config/rules/CheckTowManyInterfaceTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/config/rules/CheckTowManyInterfaceTest.java
@@ -20,11 +20,7 @@
 import org.apache.openejb.jee.StatelessBean;
 import org.junit.runner.RunWith;
 
-import javax.annotation.Resource;
 import javax.ejb.Stateless;
-import javax.ejb.TransactionManagement;
-import javax.ejb.TransactionManagementType;
-import javax.transaction.UserTransaction;
 import java.util.concurrent.Callable;
 
 /**
@@ -33,7 +29,7 @@
 @RunWith(ValidationRunner.class)
 public class CheckTowManyInterfaceTest {
 
-    @Keys( @Key("too.many.interfaces") )
+    @Keys(@Key("too.many.interfaces"))
     public EjbJar testSLSBwithUserTransaction() throws Exception {
         EjbJar ejbJar = new EjbJar();
         ejbJar.addEnterpriseBean(new StatelessBean(TwoManyInterface.class));
@@ -42,8 +38,12 @@
 
     @Stateless
     public static class TwoManyInterface implements Callable, Runnable {
-        public Object call() throws Exception { return null; }
-        @Override public void run() {}
-    }
+        public Object call() throws Exception {
+            return null;
+        }
 
+        @Override
+        public void run() {
+        }
+    }
 }
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/config/rules/InvalidInterfacesTest.java b/container/openejb-core/src/test/java/org/apache/openejb/config/rules/InvalidInterfacesTest.java
index dcaa133..b4c4efe 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/config/rules/InvalidInterfacesTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/config/rules/InvalidInterfacesTest.java
@@ -16,6 +16,13 @@
  */
 package org.apache.openejb.config.rules;
 
+import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.StatelessBean;
+import org.apache.openejb.loader.SystemInstance;
+import org.junit.After;
+import org.junit.runner.RunWith;
+
 import javax.annotation.PostConstruct;
 import javax.ejb.EJB;
 import javax.ejb.EJBHome;
@@ -26,13 +33,6 @@
 import javax.ejb.Remote;
 import javax.interceptor.AroundInvoke;
 
-import org.apache.openejb.OpenEJBException;
-import org.apache.openejb.jee.EjbJar;
-import org.apache.openejb.jee.StatelessBean;
-import org.apache.openejb.loader.SystemInstance;
-import org.junit.After;
-import org.junit.runner.RunWith;
-
 /**
  * @version $Rev$ $Date$
  */
@@ -49,59 +49,59 @@
         return ejbJar;
     }
 
-    @Keys( { @Key("xml.remote.businessLocal"), @Key("xml.home.businessLocal"), @Key("xml.local.businessLocal"), @Key("xml.localHome.businessLocal") })
+    @Keys({@Key("xml.remote.businessLocal"), @Key("xml.home.businessLocal"), @Key("xml.local.businessLocal"), @Key("xml.localHome.businessLocal")})
     public EjbJar testBusinessLocal() throws Exception {
         return validate(FooLocal.class);
     }
 
-    @Keys( { @Key("xml.remote.businessRemote"), @Key("xml.home.businessRemote"), @Key("xml.local.businessRemote"), @Key("xml.localHome.businessRemote") })
+    @Keys({@Key("xml.remote.businessRemote"), @Key("xml.home.businessRemote"), @Key("xml.local.businessRemote"), @Key("xml.localHome.businessRemote")})
     public EjbJar testBusinessRemote() throws Exception {
         return validate(FooRemote.class);
     }
 
-    @Keys( { @Key("xml.home.ejbObject"), @Key("xml.local.ejbObject"), @Key("xml.localHome.ejbObject"), @Key("xml.businessLocal.ejbObject"), @Key("xml.businessRemote.ejbObject") })
+    @Keys({@Key("xml.home.ejbObject"), @Key("xml.local.ejbObject"), @Key("xml.localHome.ejbObject"), @Key("xml.businessLocal.ejbObject"), @Key("xml.businessRemote.ejbObject")})
     public EjbJar testEJBObject() throws Exception {
         return validate(FooEJBObject.class);
     }
 
-    @Keys( { @Key("xml.remote.ejbHome"), @Key("xml.local.ejbHome"), @Key("xml.localHome.ejbHome"), @Key("xml.businessLocal.ejbHome"), @Key("xml.businessRemote.ejbHome") })
+    @Keys({@Key("xml.remote.ejbHome"), @Key("xml.local.ejbHome"), @Key("xml.localHome.ejbHome"), @Key("xml.businessLocal.ejbHome"), @Key("xml.businessRemote.ejbHome")})
     public EjbJar testEJBHome() throws Exception {
         return validate(FooEJBHome.class);
     }
 
-    @Keys( { @Key("xml.remote.ejbLocalHome"), @Key("xml.home.ejbLocalHome"), @Key("xml.local.ejbLocalHome"), @Key("xml.businessLocal.ejbLocalHome"),
-            @Key("xml.businessRemote.ejbLocalHome") })
+    @Keys({@Key("xml.remote.ejbLocalHome"), @Key("xml.home.ejbLocalHome"), @Key("xml.local.ejbLocalHome"), @Key("xml.businessLocal.ejbLocalHome"),
+            @Key("xml.businessRemote.ejbLocalHome")})
     public EjbJar testEJBLocalHome() throws Exception {
         return validate(FooEJBLocalHome.class);
     }
 
-    @Keys( { @Key("xml.remote.ejbLocalObject"), @Key("xml.home.ejbLocalObject"), @Key("xml.localHome.ejbLocalObject"), @Key("xml.businessLocal.ejbLocalObject"),
-            @Key("xml.businessRemote.ejbLocalObject") })
+    @Keys({@Key("xml.remote.ejbLocalObject"), @Key("xml.home.ejbLocalObject"), @Key("xml.localHome.ejbLocalObject"), @Key("xml.businessLocal.ejbLocalObject"),
+            @Key("xml.businessRemote.ejbLocalObject")})
     public EjbJar testEJBLocalObject() throws Exception {
         return validate(FooEJBLocalObject.class);
     }
 
-    @Keys( { @Key("xml.remote.unknown"), @Key("xml.home.unknown"), @Key("xml.localHome.unknown"), @Key("xml.local.unknown"), @Key("xml.localRemote.conflict") })
+    @Keys({@Key("xml.remote.unknown"), @Key("xml.home.unknown"), @Key("xml.localHome.unknown"), @Key("xml.local.unknown"), @Key("xml.localRemote.conflict")})
     public EjbJar testUnkown() throws Exception {
         SystemInstance.get().setProperty("openejb.strict.interface.declaration", "true");
         return validate(FooUnknown.class);
     }
 
-    @Keys( { @Key("xml.remote.beanClass"), @Key("xml.home.beanClass"), @Key("xml.localHome.beanClass"), @Key("xml.local.beanClass"), @Key("xml.businessRemote.beanClass"),
-            @Key("xml.businessLocal.beanClass") })
+    @Keys({@Key("xml.remote.beanClass"), @Key("xml.home.beanClass"), @Key("xml.localHome.beanClass"), @Key("xml.local.beanClass"), @Key("xml.businessRemote.beanClass"),
+            @Key("xml.businessLocal.beanClass")})
     public EjbJar testBeanClass() throws Exception {
         return validate(FooBean.class);
     }
 
-    @Keys( { @Key("xml.remote.notInterface"), @Key("xml.home.notInterface"), @Key("xml.localHome.notInterface"), @Key("xml.local.notInterface"),
-            @Key("xml.businessRemote.notInterface"), @Key("xml.businessLocal.notInterface") })
+    @Keys({@Key("xml.remote.notInterface"), @Key("xml.home.notInterface"), @Key("xml.localHome.notInterface"), @Key("xml.local.notInterface"),
+            @Key("xml.businessRemote.notInterface"), @Key("xml.businessLocal.notInterface")})
     public EjbJar testNotInterface() throws Exception {
         return validate(FooClass.class);
     }
 
-    @Keys( { @Key("ann.notAnInterface"), @Key("xml.businessLocal.notInterface"), @Key("ann.localRemote.conflict"), @Key("ann.remoteOrLocal.ejbHome"),
+    @Keys({@Key("ann.notAnInterface"), @Key("xml.businessLocal.notInterface"), @Key("ann.localRemote.conflict"), @Key("ann.remoteOrLocal.ejbHome"),
             @Key("xml.businessRemote.ejbHome"), @Key("ann.remoteOrLocal.ejbObject"), @Key("xml.businessRemote.ejbObject"), @Key(value = "ann.remoteOrLocal.ejbLocalHome"),
-            @Key(value = "ann.remoteOrLocal.ejbLocalObject"), @Key("xml.businessLocal.ejbLocalHome"), @Key("xml.businessLocal.ejbLocalObject") })
+            @Key(value = "ann.remoteOrLocal.ejbLocalObject"), @Key("xml.businessLocal.ejbLocalHome"), @Key("xml.businessLocal.ejbLocalObject")})
     public EjbJar test() throws OpenEJBException {
         SystemInstance.get().setProperty("openejb.strict.interface.declaration", "true");
         EjbJar ejbJar = new EjbJar();
@@ -110,23 +110,26 @@
         StatelessBean mybean1 = ejbJar.addEnterpriseBean(new StatelessBean("MyBean1", MyBean.class));
         return ejbJar;
     }
-    @Keys({@Key(value="interface.beanOnlyAnnotation",type=KeyType.WARNING),@Key(value="interfaceMethod.beanOnlyAnnotation",type=KeyType.WARNING),@Key("aroundInvoke.invalidArguments")})
-    public EjbJar test1(){
+
+    @Keys({@Key(value = "interface.beanOnlyAnnotation", type = KeyType.WARNING), @Key(value = "interfaceMethod.beanOnlyAnnotation", type = KeyType.WARNING), @Key("aroundInvoke.invalidArguments")})
+    public EjbJar test1() {
         SystemInstance.get().setProperty("openejb.strict.interface.declaration", "true");
         EjbJar ejbJar = new EjbJar();
         ejbJar.addEnterpriseBean(new StatelessBean(DBean.class));
         return ejbJar;
-    
+
     }
-    @Keys({@Key(value="ann.remoteOrLocal.converse.parent",count=2)})
-    public EjbJar test2(){
-      SystemInstance.get().setProperty("openejb.strict.interface.declaration", "true");
+
+    @Keys({@Key(value = "ann.remoteOrLocal.converse.parent", count = 2)})
+    public EjbJar test2() {
+        SystemInstance.get().setProperty("openejb.strict.interface.declaration", "true");
         EjbJar ejbJar = new EjbJar();
         ejbJar.addEnterpriseBean(new StatelessBean(EBean.class));
         ejbJar.addEnterpriseBean(new StatelessBean(FBean.class));
         return ejbJar;
-    
+
     }
+
     @After
     public void after() {
         SystemInstance.get().setProperty("openejb.strict.interface.declaration", "false");
@@ -142,66 +145,103 @@
         return ejbJar;
     }
 
-    public static class FooBean {}
+    public static class FooBean {
+    }
 
-    public static interface FooEJBHome extends EJBHome {}
+    public static interface FooEJBHome extends EJBHome {
+    }
 
-    public static interface FooEJBObject extends EJBObject {}
+    public static interface FooEJBObject extends EJBObject {
+    }
 
-    public static interface FooEJBLocalHome extends EJBLocalHome {}
+    public static interface FooEJBLocalHome extends EJBLocalHome {
+    }
 
-    public static interface FooEJBLocalObject extends EJBLocalObject {}
+    public static interface FooEJBLocalObject extends EJBLocalObject {
+    }
 
     @Remote
-    public static interface FooRemote {}
+    public static interface FooRemote {
+    }
 
     @Local
-    public static interface FooLocal {}
+    public static interface FooLocal {
+    }
 
-    public static interface FooUnknown {}
+    public static interface FooUnknown {
+    }
 
-    public static class FooClass {}
+    public static class FooClass {
+    }
 
-    public static interface MyRemoteHome extends EJBHome {}
+    public static interface MyRemoteHome extends EJBHome {
+    }
 
-    public static interface MyLocalHome extends EJBLocalHome {}
+    public static interface MyLocalHome extends EJBLocalHome {
+    }
 
-    public static interface MyRemote extends EJBObject {}
+    public static interface MyRemote extends EJBObject {
+    }
 
-    public static interface MyLocal extends EJBLocalObject {}
+    public static interface MyLocal extends EJBLocalObject {
+    }
 
-    @Remote( { MyRemoteHome.class, MyRemote.class })
-    @Local( { MyLocalHome.class, MyLocal.class })
-    public static class MyBean {}
+    @Remote({MyRemoteHome.class, MyRemote.class})
+    @Local({MyLocalHome.class, MyLocal.class})
+    public static class MyBean {
+    }
 
-    public static class ABean {}
+    public static class ABean {
+    }
 
     @Local(ABean.class)
-    public static class BBean extends ABean {}
+    public static class BBean extends ABean {
+    }
 
-    public static interface C {}
+    public static interface C {
+    }
 
     @Local(C.class)
     @Remote(C.class)
-    public static class CBean {}
+    public static class CBean {
+    }
+
     @EJB
-    public static interface D{
+    public static interface D {
         @PostConstruct
         public void foo();
     }
+
     @Local(D.class)
-    public static class DBean{
-        public void foo(){}
-        @AroundInvoke public Object bar(){return null;}
+    public static class DBean {
+        public void foo() {
+        }
+
+        @AroundInvoke
+        public Object bar() {
+            return null;
+        }
     }
+
     @Local
-    public static interface E{}
+    public static interface E {
+    }
+
     @Remote
-    public static interface E1 extends E{}
-    public static class EBean implements E1{}
+    public static interface E1 extends E {
+    }
+
+    public static class EBean implements E1 {
+    }
+
     @Remote
-    public static interface F{}
+    public static interface F {
+    }
+
     @Local
-    public static interface F1 extends F{}
-    public static class FBean implements F1{}
+    public static interface F1 extends F {
+    }
+
+    public static class FBean implements F1 {
+    }
 }
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/config/rules/KeysAnnotationVisitor.java b/container/openejb-core/src/test/java/org/apache/openejb/config/rules/KeysAnnotationVisitor.java
index 6ad8d45..f692e66 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/config/rules/KeysAnnotationVisitor.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/config/rules/KeysAnnotationVisitor.java
@@ -16,24 +16,25 @@
  */
 package org.apache.openejb.config.rules;
 
-import java.util.HashSet;
-
-import org.apache.openejb.config.rules.ValidationRunner;
 import org.apache.xbean.asm.AnnotationVisitor;
 import org.apache.xbean.asm.MethodVisitor;
 import org.apache.xbean.asm.Type;
 import org.apache.xbean.asm.commons.EmptyVisitor;
 
+import java.util.HashSet;
+
 public class KeysAnnotationVisitor extends EmptyVisitor {
-    private ClassInfo current;;
+    private ClassInfo current;
     private MethodInfo currentMethod;
     public static HashSet<ClassInfo> classInfos = new HashSet<ClassInfo>();
 
-    public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) {
+    @Override
+    public void visit(final int version, final int access, final String name, final String signature, final String superName, final String[] interfaces) {
         current = new ClassInfo(name);
     }
 
-    public AnnotationVisitor visitAnnotation(String desc, boolean arg1) {
+    @Override
+    public AnnotationVisitor visitAnnotation(final String desc, final boolean arg1) {
         if (desc.contains("RunWith"))
             return this;
         if (desc.contains("Keys")) {
@@ -43,22 +44,24 @@
         return null;
     }
 
-    public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
+    @Override
+    public MethodVisitor visitMethod(final int access, final String name, final String desc, final String signature, final String[] exceptions) {
         currentMethod = new MethodInfo(name);
         return this;
     }
 
-    public void visit(String name, Object value) {
+    @Override
+    public void visit(final String name, final Object value) {
         if ("value".equals(name)) {
             if (value instanceof Type) {
-                Type type = (Type) value;
-                int sort = type.getSort();
+                final Type type = (Type) value;
+                final int sort = type.getSort();
                 switch (sort) {
-                case Type.OBJECT:
-                    if (type.getClassName().equals(ValidationRunner.class.getName())) {
-                        classInfos.add(current);
-                    }
-                    break;
+                    case Type.OBJECT:
+                        if (type.getClassName().equals(ValidationRunner.class.getName())) {
+                            classInfos.add(current);
+                        }
+                        break;
                 }
             } else {
                 currentMethod.keys.add((String) value);
@@ -66,14 +69,16 @@
         }
     }
 
-    public AnnotationVisitor visitAnnotation(String name, String desc) {
+    @Override
+    public AnnotationVisitor visitAnnotation(final String name, final String desc) {
         if (desc.contains("Key")) {
             return this;
         }
         return null;
     }
 
-    public AnnotationVisitor visitArray(String arg0) {
+    @Override
+    public AnnotationVisitor visitArray(final String arg0) {
         return this;
     }
 
@@ -81,7 +86,7 @@
         String clazz;
         HashSet<MethodInfo> methuds;
 
-        public ClassInfo(String clazz) {
+        public ClassInfo(final String clazz) {
             this.clazz = clazz;
             methuds = new HashSet<MethodInfo>();
         }
@@ -95,14 +100,14 @@
         }
 
         @Override
-        public boolean equals(Object obj) {
+        public boolean equals(final Object obj) {
             if (this == obj)
                 return true;
             if (obj == null)
                 return false;
             if (getClass() != obj.getClass())
                 return false;
-            ClassInfo other = (ClassInfo) obj;
+            final ClassInfo other = (ClassInfo) obj;
             if (clazz == null) {
                 if (other.clazz != null)
                     return false;
@@ -116,7 +121,7 @@
         String methud;
         HashSet<String> keys;
 
-        public MethodInfo(String methud) {
+        public MethodInfo(final String methud) {
             this.methud = methud;
             keys = new HashSet<String>();
         }
@@ -130,14 +135,14 @@
         }
 
         @Override
-        public boolean equals(Object obj) {
+        public boolean equals(final Object obj) {
             if (this == obj)
                 return true;
             if (obj == null)
                 return false;
             if (getClass() != obj.getClass())
                 return false;
-            MethodInfo other = (MethodInfo) obj;
+            final MethodInfo other = (MethodInfo) obj;
             if (methud == null) {
                 if (other.methud != null)
                     return false;
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/config/rules/ValidationKeysAuditorTest.java b/container/openejb-core/src/test/java/org/apache/openejb/config/rules/ValidationKeysAuditorTest.java
index 8a8f4f9..12c0763 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/config/rules/ValidationKeysAuditorTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/config/rules/ValidationKeysAuditorTest.java
@@ -16,22 +16,6 @@
  */
 package org.apache.openejb.config.rules;
 
-import static org.apache.openejb.util.URLs.toFile;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.HashSet;
-import java.util.ResourceBundle;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.TreeSet;
-import java.util.Map.Entry;
-
 import org.apache.openejb.config.rules.KeysAnnotationVisitor.ClassInfo;
 import org.apache.openejb.config.rules.KeysAnnotationVisitor.MethodInfo;
 import org.apache.openejb.loader.IO;
@@ -42,6 +26,21 @@
 import org.junit.BeforeClass;
 import org.junit.Test;
 
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.HashSet;
+import java.util.Map.Entry;
+import java.util.ResourceBundle;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
+import static org.apache.openejb.util.URLs.toFile;
+
 /**
  * This class is not meant to be a container for tests. Its an audit tool which generates a report of how many of the keys listed in
  * org.apache.openejb.config.rules.Messages.properties have tests written for them
@@ -51,20 +50,20 @@
 
     @BeforeClass
     public static void init() {
-        ResourceBundle bundle = ResourceBundle.getBundle("org.apache.openejb.config.rules.Messages");
+        final ResourceBundle bundle = ResourceBundle.getBundle("org.apache.openejb.config.rules.Messages");
         allKeys = bundle.keySet();
         allKeys = stripPrefixes(allKeys);
     }
 
     @Test
     public void audit() {
-        URL resource = ValidationKeysAuditorTest.class.getResource("/org/apache/openejb/config/rules/Keys.class");
-        File file = toFile(resource);
-        KeysAnnotationVisitor visitor = new KeysAnnotationVisitor();
+        final URL resource = ValidationKeysAuditorTest.class.getResource("/org/apache/openejb/config/rules/Keys.class");
+        final File file = toFile(resource);
+        final KeysAnnotationVisitor visitor = new KeysAnnotationVisitor();
         dir(file.getParentFile(), visitor);
         try {
             generateReport(file, visitor);
-            String confluenceOutput = generateConfluenceReport(file, visitor);
+            final String confluenceOutput = generateConfluenceReport(file, visitor);
             writeToConfluence(confluenceOutput);
         } catch (IOException e) {
             // ignore it
@@ -75,18 +74,18 @@
     /**
      * This method will write to confluence only if you supply the system properties confluenceUsername and confluencePassword example usage mvn test
      * -Dtest=ValidationKeysAuditorTest -DconfluenceUsername=<<your username>> -DconfluencePassword=<<your password>>
-     * 
+     *
      * @param confluenceOutput
      */
-    private void writeToConfluence(String confluenceOutput) {
-        String username = System.getProperty("confluenceUsername");
-        String password = System.getProperty("confluencePassword");
+    private void writeToConfluence(final String confluenceOutput) {
+        final String username = System.getProperty("confluenceUsername");
+        final String password = System.getProperty("confluencePassword");
         if (validate(username) && validate(password)) {
             try {
-                String endpoint = "https://cwiki.apache.org/confluence/rpc/xmlrpc";
-                Confluence confluence = new Confluence(endpoint);
+                final String endpoint = "https://cwiki.apache.org/confluence/rpc/xmlrpc";
+                final Confluence confluence = new Confluence(endpoint);
                 confluence.login(username, password);
-                Page page = confluence.getPage("OPENEJB", "Validation Keys Audit Report");
+                final Page page = confluence.getPage("OPENEJB", "Validation Keys Audit Report");
                 page.setContent(confluenceOutput);
                 confluence.storePage(page);
                 confluence.logout();
@@ -96,7 +95,7 @@
         }
     }
 
-    private boolean validate(String str) {
+    private boolean validate(final String str) {
         if (str == null)
             return false;
         if ("true".equalsIgnoreCase(str))
@@ -108,10 +107,10 @@
         return true;
     }
 
-    private String generateConfluenceReport(File file, KeysAnnotationVisitor visitor) throws IOException {
-        StringBuilder output = new StringBuilder();
-        String newLine = System.getProperty("line.separator");
-        Set<String> testedKeys = getTestedKeys(visitor.classInfos);
+    private String generateConfluenceReport(final File file, final KeysAnnotationVisitor visitor) throws IOException {
+        final StringBuilder output = new StringBuilder();
+        final String newLine = System.getProperty("line.separator");
+        final Set<String> testedKeys = getTestedKeys(visitor.classInfos);
         Set<String> untestedKeys = getUntestedKeys(testedKeys);
         untestedKeys = new TreeSet<String>(untestedKeys);// sort the keys
         prepareConfluenceSummary(untestedKeys, output, newLine);
@@ -121,34 +120,34 @@
         return output.toString();
     }
 
-    private void prepareConfluenceTestedKeysDetailedReport(HashSet<ClassInfo> classInfos, StringBuilder output, String newLine) {
-        TreeMap<String, TreeSet<String>> info = new TreeMap<String, TreeSet<String>>();
+    private void prepareConfluenceTestedKeysDetailedReport(final HashSet<ClassInfo> classInfos, final StringBuilder output, final String newLine) {
+        final TreeMap<String, TreeSet<String>> info = new TreeMap<String, TreeSet<String>>();
         output.append("h2.List of keys which have been tested.").append(newLine);
         output.append("{table-plus:autoNumber=true}").append(newLine);
         output.append("|| Key | Method which tests the key ||").append(newLine);
-        for (ClassInfo classInfo : classInfos) {
-            HashSet<MethodInfo> methuds = classInfo.methuds;
-            for (MethodInfo methodInfo : methuds) {
-                HashSet<String> keys = methodInfo.keys;
-                for (String key : keys) {
+        for (final ClassInfo classInfo : classInfos) {
+            final HashSet<MethodInfo> methuds = classInfo.methuds;
+            for (final MethodInfo methodInfo : methuds) {
+                final HashSet<String> keys = methodInfo.keys;
+                for (final String key : keys) {
                     if (!info.containsKey(key)) {
-                        TreeSet<String> set = new TreeSet<String>();
+                        final TreeSet<String> set = new TreeSet<String>();
                         set.add(createConfluenceLink(classInfo.clazz + "." + methodInfo.methud + "()"));
                         info.put(key, set);
                     } else {
-                        TreeSet<String> set = info.get(key);
+                        final TreeSet<String> set = info.get(key);
                         set.add(createConfluenceLink(classInfo.clazz + "." + methodInfo.methud + "()"));
                     }
                 }
             }
         }
-        Set<Entry<String, TreeSet<String>>> entrySet = info.entrySet();
-        for (Entry<String, TreeSet<String>> entry : entrySet) {
-            String key = entry.getKey();
+        final Set<Entry<String, TreeSet<String>>> entrySet = info.entrySet();
+        for (final Entry<String, TreeSet<String>> entry : entrySet) {
+            final String key = entry.getKey();
             output.append("| ").append(key).append(" | ");
             int count = 0;
-            TreeSet<String> values = entry.getValue();
-            for (String value : values) {
+            final TreeSet<String> values = entry.getValue();
+            for (final String value : values) {
                 if (count > 0) {
                     output.append(" \\\\ ");
                 }
@@ -160,78 +159,78 @@
         output.append("{table-plus}").append(newLine);
     }
 
-    private String createConfluenceLink(String string) {
+    private String createConfluenceLink(final String string) {
         String link = "[" + string + " | ";
-        String temp = string.substring(0, string.lastIndexOf("."));
-        String location = "https://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/" + temp + ".java?revision=HEAD&view=markup ]";
+        final String temp = string.substring(0, string.lastIndexOf("."));
+        final String location = "https://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/" + temp + ".java?revision=HEAD&view=markup ]";
         link = link + location;
         return link;
     }
 
-    private void prepareConfluenceUntestedKeyList(Set<String> untestedKeys, StringBuilder output, String newLine) {
+    private void prepareConfluenceUntestedKeyList(final Set<String> untestedKeys, final StringBuilder output, final String newLine) {
         output.append("{table-plus:autoNumber=true}").append(newLine);
         output.append("|| h2.List of untested keys \\\\ ||").append(newLine);
-        for (String key : untestedKeys) {
+        for (final String key : untestedKeys) {
             output.append(" | ").append(key).append(" | ").append(newLine);
         }
         output.append("{table-plus}").append(newLine);
     }
 
-    private void prepareConfluenceSummary(Set<String> untestedKeys, StringBuilder output, String newLine) {
-        int total = allKeys.size();
-        int untested = untestedKeys.size();
-        int tested = total - untested;
-        double coverage = (((tested + 0.0) / (total + 0.0)) * 100);
+    private void prepareConfluenceSummary(final Set<String> untestedKeys, final StringBuilder output, final String newLine) {
+        final int total = allKeys.size();
+        final int untested = untestedKeys.size();
+        final int tested = total - untested;
+        final double coverage = (((tested + 0.0) / (total + 0.0)) * 100);
         output.append("{warning:title=Warning}This page is auto-generated. Any manual changes would be over-written the next time this page is regenerated{warning}").append(
                 newLine);
-        output.append("{info:title=Audit Result}h2.Out of a total of " + total + " keys, " + tested + " have been tested. Test coverage for keys is " + coverage + " %.{info}")
+        output.append("{info:title=Audit Result}h2.Out of a total of ").append(total).append(" keys, ").append(tested).append(" have been tested. Test coverage for keys is ").append(coverage).append(" %.{info}")
                 .append(newLine);
     }
 
-    private void generateReport(File file, KeysAnnotationVisitor visitor) throws IOException {
-        StringBuilder output = new StringBuilder();
-        String newLine = System.getProperty("line.separator");
-        Set<String> testedKeys = getTestedKeys(visitor.classInfos);
+    private void generateReport(final File file, final KeysAnnotationVisitor visitor) throws IOException {
+        final StringBuilder output = new StringBuilder();
+        final String newLine = System.getProperty("line.separator");
+        final Set<String> testedKeys = getTestedKeys(KeysAnnotationVisitor.classInfos);
         Set<String> untestedKeys = getUntestedKeys(testedKeys);
         untestedKeys = new TreeSet<String>(untestedKeys);// sort the keys
         prepareSummary(untestedKeys, output, newLine);
         prepareUntestedKeyList(untestedKeys, output, newLine);
-        prepareTestedKeysDetailedReport(visitor.classInfos, output, newLine);
+        prepareTestedKeysDetailedReport(KeysAnnotationVisitor.classInfos, output, newLine);
         writeToFile(file, output, "ValidationKeyAuditReport.txt");
     }
 
-    private void prepareTestedKeysDetailedReport(HashSet<ClassInfo> classInfos, StringBuilder output, String newLine) throws IOException {
+    private void prepareTestedKeysDetailedReport(final HashSet<ClassInfo> classInfos, final StringBuilder output, final String newLine) throws IOException {
         output.append("================================================================================================").append(newLine);
         output.append("List of all keys tested. Next to each is the the test method which tests the key").append(newLine);
         output.append("================================================================================================").append(newLine);
-        TreeMap<String, TreeSet<String>> info = new TreeMap<String, TreeSet<String>>();
-        for (ClassInfo classInfo : classInfos) {
-            HashSet<MethodInfo> methuds = classInfo.methuds;
-            for (MethodInfo methodInfo : methuds) {
-                HashSet<String> keys = methodInfo.keys;
-                for (String key : keys) {
+        final TreeMap<String, TreeSet<String>> info = new TreeMap<String, TreeSet<String>>();
+        for (final ClassInfo classInfo : classInfos) {
+            final HashSet<MethodInfo> methuds = classInfo.methuds;
+            for (final MethodInfo methodInfo : methuds) {
+                final HashSet<String> keys = methodInfo.keys;
+                for (final String key : keys) {
                     if (!info.containsKey(key)) {
-                        TreeSet<String> set = new TreeSet<String>();
+                        final TreeSet<String> set = new TreeSet<String>();
                         set.add(classInfo.clazz + "." + methodInfo.methud + "()");
                         info.put(key, set);
                     } else {
-                        TreeSet<String> set = info.get(key);
+                        final TreeSet<String> set = info.get(key);
                         set.add(classInfo.clazz + "." + methodInfo.methud + "()");
                     }
                 }
             }
         }
-        Set<Entry<String, TreeSet<String>>> entrySet = info.entrySet();
-        for (Entry<String, TreeSet<String>> entry : entrySet) {
-            String key = entry.getKey();
+        final Set<Entry<String, TreeSet<String>>> entrySet = info.entrySet();
+        for (final Entry<String, TreeSet<String>> entry : entrySet) {
+            final String key = entry.getKey();
             output.append(key).append(" --> ");
             int count = 0;
-            TreeSet<String> values = entry.getValue();
-            for (String value : values) {
+            final TreeSet<String> values = entry.getValue();
+            for (final String value : values) {
                 if (count > 0) {
                     // put as many spaces as there are characters in the key to indent and align multiple values for the same key
-                    StringBuilder spaces = new StringBuilder();
-                    for(int i=0;i<key.length();i++){
+                    final StringBuilder spaces = new StringBuilder();
+                    for (int i = 0; i < key.length(); i++) {
                         spaces.append(" ");
                     }
                     output.append(spaces).append(" --> ");
@@ -242,54 +241,66 @@
         }
     }
 
-    private void writeToFile(File file, StringBuilder output, String fileName) throws IOException {
-        File surefireReports = new File(dir(file), "surefire-reports");
+    private void writeToFile(final File file, final StringBuilder output, final String fileName) throws IOException {
+        final File surefireReports = new File(dir(file), "surefire-reports");
         if (!surefireReports.exists()) {
             surefireReports.mkdir();
         }
-        File auditResults = new File(surefireReports, fileName);
+        final File auditResults = new File(surefireReports, fileName);
         BufferedWriter bw = null;
         try {
-            FileWriter writer = new FileWriter(auditResults);
+            final FileWriter writer = new FileWriter(auditResults);
             bw = new BufferedWriter(writer);
             bw.append(output.toString());
         } finally {
-            bw.flush();
-            bw.close();
+            if (bw != null) {
+                try {
+                    bw.flush();
+                } catch (Throwable e) {
+                    //Ignore
+                }
+            }
+            if (bw != null) {
+                try {
+                    bw.close();
+                } catch (Throwable e) {
+                    //Ignore
+                }
+            }
         }
     }
 
-    private void prepareUntestedKeyList(Set<String> untestedKeys, StringBuilder output, String newLine) {
+    private void prepareUntestedKeyList(final Set<String> untestedKeys, final StringBuilder output, final String newLine) {
         output.append("================================================================================================").append(newLine);
         output.append("List of all keys which have not been tested yet.").append(newLine);
         output.append("================================================================================================").append(newLine);
-        for (String key : untestedKeys) {
+        for (final String key : untestedKeys) {
             output.append(key).append(newLine);
         }
     }
 
-    private Set<String> getUntestedKeys(Set<String> testedKeys) {
-        Set<String> untestedKeys = new HashSet<String>();
-        for (String key : allKeys) {
+    private Set<String> getUntestedKeys(final Set<String> testedKeys) {
+        final Set<String> untestedKeys = new HashSet<String>();
+        for (final String key : allKeys) {
             if (!testedKeys.contains(key))
                 untestedKeys.add(key);
         }
         return untestedKeys;
     }
 
-    private Set<String> getTestedKeys(HashSet<ClassInfo> classInfos) {
-        Set<String> testedKeys = new HashSet<String>();
-        for (ClassInfo classInfo : classInfos) {
-            HashSet<MethodInfo> methuds = classInfo.methuds;
-            for (MethodInfo methodInfo : methuds) {
+    private Set<String> getTestedKeys(final HashSet<ClassInfo> classInfos) {
+        final Set<String> testedKeys = new HashSet<String>();
+        for (final ClassInfo classInfo : classInfos) {
+            final HashSet<MethodInfo> methuds = classInfo.methuds;
+            for (final MethodInfo methodInfo : methuds) {
                 testedKeys.addAll(methodInfo.keys);
             }
         }
         return testedKeys;
     }
 
-    private static Set<String> stripPrefixes(Set<String> allKeys) {
-        Set<String> keys = new HashSet<String>();
+    private static Set<String> stripPrefixes(final Set<String> allKeys) {
+        final Set<String> keys = new HashSet<String>();
         for (String key : allKeys) {
             key = key.substring(key.indexOf(".") + 1);
             if (!keys.contains(key))
@@ -298,13 +309,13 @@
         return keys;
     }
 
-    private void prepareSummary(Set<String> untestedKeys, StringBuilder output, String newLine) {
-        int total = allKeys.size();
-        int untested = untestedKeys.size();
-        int tested = total - untested;
-        double coverage = (((tested + 0.0) / (total + 0.0)) * 100);
+    private void prepareSummary(final Set<String> untestedKeys, final StringBuilder output, final String newLine) {
+        final int total = allKeys.size();
+        final int untested = untestedKeys.size();
+        final int tested = total - untested;
+        final double coverage = (((tested + 0.0) / (total + 0.0)) * 100);
         output.append("================================================================================================").append(newLine);
-        output.append("Out of a total of " + total + " keys, " + tested + " have been tested. Test coverage for keys is " + coverage + " %.").append(newLine);
+        output.append("Out of a total of ").append(total).append(" keys, ").append(tested).append(" have been tested. Test coverage for keys is ").append(coverage).append(" %.").append(newLine);
         output.append("================================================================================================").append(newLine);
     }
 
@@ -320,10 +331,10 @@
         return null;
     }
 
-    private static void dir(File dir, KeysAnnotationVisitor visitor) {
+    private static void dir(final File dir, final KeysAnnotationVisitor visitor) {
         final File[] files = dir.listFiles();
         if (files != null) {
-            for (File file : files) {
+            for (final File file : files) {
                 if (file.isDirectory()) {
                     dir(file, visitor);
                 } else if (file.getName().endsWith(".class")) {
@@ -333,11 +344,11 @@
         }
     }
 
-    private static void file(File file, KeysAnnotationVisitor visitor) {
+    private static void file(final File file, final KeysAnnotationVisitor visitor) {
         try {
-            InputStream in = IO.read(file);
+            final InputStream in = IO.read(file);
             try {
-                ClassReader classReader = new ClassReader(in);
+                final ClassReader classReader = new ClassReader(in);
                 classReader.accept(visitor, ClassWriter.COMPUTE_MAXS);
             } finally {
                 IO.close(in);
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/config/sys/OpenejbTest.java b/container/openejb-core/src/test/java/org/apache/openejb/config/sys/OpenejbTest.java
index 48f1fd8..e8611da 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/config/sys/OpenejbTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/config/sys/OpenejbTest.java
@@ -80,7 +80,7 @@
 
     private Deployments jar(String s) {
         final Deployments deployments = new Deployments();
-        deployments.setJar(s);
+        deployments.setFile(s);
         return deployments;
     }
 
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/core/singleton/SingletonCircularTest.java b/container/openejb-core/src/test/java/org/apache/openejb/core/singleton/SingletonCircularTest.java
index 6dfca4f..c602bdb 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/core/singleton/SingletonCircularTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/core/singleton/SingletonCircularTest.java
@@ -16,17 +16,7 @@
  */
 package org.apache.openejb.core.singleton;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-import javax.ejb.EJB;
-import javax.ejb.Singleton;
-import javax.ejb.Startup;
-
 import junit.framework.TestCase;
-
 import org.apache.openejb.assembler.classic.Assembler;
 import org.apache.openejb.assembler.classic.ProxyFactoryInfo;
 import org.apache.openejb.assembler.classic.SecurityServiceInfo;
@@ -37,11 +27,19 @@
 import org.apache.openejb.jee.EjbJar;
 import org.apache.openejb.jee.SingletonBean;
 
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.ejb.EJB;
+import javax.ejb.Singleton;
+import javax.ejb.Startup;
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * @version $Rev$ $Date$
  */
 public class SingletonCircularTest extends TestCase {
-    
+
     private static final String one = "one";
     private static final String two = "two";
 
@@ -58,7 +56,7 @@
 
         // containers
         assembler.createContainer(config.configureService(SingletonSessionContainerInfo.class));
-        
+
         actual.clear();
 
         EjbJar ejbJar = new EjbJar();
@@ -79,8 +77,9 @@
     @Startup
     public static class One {
 
-        @EJB Two two;
-        
+        @EJB
+        Two two;
+
         @PostConstruct
         @PreDestroy
         public void callback() {
@@ -92,13 +91,14 @@
     @Startup
     public static class Two {
 
-        @EJB One one;
-        
+        @EJB
+        One one;
+
         @PostConstruct
         @PreDestroy
         public void callback() {
             actual.add(two);
         }
     }
-   
+
 }
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/iTest.java b/container/openejb-core/src/test/java/org/apache/openejb/iTest.java
index 470d9d9..62b70e3 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/iTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/iTest.java
@@ -38,6 +38,7 @@
      * To run this from your ide, set -Dopenejb.home=target/test-classes/
      * @throws Exception
      */
+    @Override
     protected void setUp() throws Exception {
         try {
             OpenEJB.destroy();
@@ -69,6 +70,7 @@
         TestManager.start();
     }
 
+    @Override
     protected void tearDown() throws Exception {
         TestManager.stop();
         OpenEJB.destroy();
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/mbeans/Parent.java b/container/openejb-core/src/test/java/org/apache/openejb/mbeans/Parent.java
index 921cb0a..3012536 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/mbeans/Parent.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/mbeans/Parent.java
@@ -24,14 +24,16 @@
     private int i = -1;
 
     @ManagedAttribute
-    @Description("just a value") public int getValue() {
+    @Description("just a value")
+    public int getValue() {
         if (i < 0) {
             return 2;
         }
         return i;
     }
 
-    @ManagedAttribute public void setValue(int v) {
+    @ManagedAttribute
+    public void setValue(int v) {
         i = v;
     }
 }
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/persistence/ReloadableEntityManagerFactoryTest.java b/container/openejb-core/src/test/java/org/apache/openejb/persistence/ReloadableEntityManagerFactoryTest.java
index fd88485..2d4e39a 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/persistence/ReloadableEntityManagerFactoryTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/persistence/ReloadableEntityManagerFactoryTest.java
@@ -63,7 +63,8 @@
         return p;
     }
 
-    @Test public void reload() {
+    @Test
+    public void reload() {
         final ReloadableEntityManagerFactory remft = (ReloadableEntityManagerFactory) emf;
         final EntityManagerFactory originalEmf = remft.getDelegate();
         assertEquals("false", emf.getProperties().get("openjpa.DataCache"));
@@ -80,13 +81,14 @@
 
     private void select() {
         emf.createEntityManager()
-            .createQuery("select m from ReloadableEntityManagerFactoryTest$MyEntity m")
-            .getResultList();
+                .createQuery("select m from ReloadableEntityManagerFactoryTest$MyEntity m")
+                .getResultList();
     }
 
     @Entity
     public static class MyEntity {
-        @Id @GeneratedValue
+        @Id
+        @GeneratedValue
         private long id;
 
         public long getId() {
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/resource/activemq/ActiveMQResourceAdapterTest.java b/container/openejb-core/src/test/java/org/apache/openejb/resource/activemq/ActiveMQResourceAdapterTest.java
index da07674..86d8c3b 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/resource/activemq/ActiveMQResourceAdapterTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/resource/activemq/ActiveMQResourceAdapterTest.java
@@ -26,7 +26,7 @@
 public class ActiveMQResourceAdapterTest extends TestCase {
     public void test() throws Exception {
         ActiveMQResourceAdapter resourceAdapter = new ActiveMQResourceAdapter();
-        resourceAdapter.setServerUrl("vm://localhost?waitForStart=20000&async=true");
+        resourceAdapter.setServerUrl("vm://localhost?waitForStart=30000&async=false");
 
         String brokerAddress = NetworkUtil.getLocalAddress("broker:(tcp://", ")?useJmx=false");
         resourceAdapter.setBrokerXmlConfig(brokerAddress);
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/timer/TimerContainerTest.java b/container/openejb-core/src/test/java/org/apache/openejb/timer/TimerContainerTest.java
index c9c1a0c..9304042 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/timer/TimerContainerTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/timer/TimerContainerTest.java
@@ -17,14 +17,7 @@
  */
 package org.apache.openejb.timer;
 
-import javax.annotation.Resource;
-import javax.ejb.SessionContext;
-import javax.ejb.Stateless;
-import javax.ejb.TimerService;
-import javax.naming.InitialContext;
-
 import junit.framework.TestCase;
-
 import org.apache.openejb.assembler.classic.Assembler;
 import org.apache.openejb.assembler.classic.ProxyFactoryInfo;
 import org.apache.openejb.assembler.classic.SecurityServiceInfo;
@@ -35,12 +28,18 @@
 import org.apache.openejb.jee.EjbJar;
 import org.apache.openejb.jee.StatelessBean;
 
+import javax.annotation.Resource;
+import javax.ejb.SessionContext;
+import javax.ejb.Stateless;
+import javax.ejb.TimerService;
+import javax.naming.InitialContext;
+
 /**
  * @version $Revision$ $Date$
  */
 public class TimerContainerTest extends TestCase {
 
-    public void testTimerServiceInjection() throws Exception {       
+    public void testTimerServiceInjection() throws Exception {
         InitialContext ctx = new InitialContext();
 
         Object object = ctx.lookup("WidgetBeanLocal");
@@ -50,7 +49,7 @@
         Widget widget = (Widget) object;
 
         // Do a business method...
-        assertTrue("Timer was not injected", widget.isTimerSet());        
+        assertTrue("Timer was not injected", widget.isTimerSet());
     }
 
     protected void setUp() throws Exception {
@@ -95,9 +94,10 @@
     @Stateless
     public static class WidgetBean implements Widget, RemoteWidget {
 
-        @Resource TimerService timer;
+        @Resource
+        TimerService timer;
 
-        public WidgetBean() {           
+        public WidgetBean() {
         }
 
         @Resource
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/util/Archives.java b/container/openejb-core/src/test/java/org/apache/openejb/util/Archives.java
index a90d77e..2bbaa97 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/util/Archives.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/util/Archives.java
@@ -135,7 +135,7 @@
             out.closeEntry();
         }
 
-        for (Map.Entry<String, ?> entry : entries.entrySet()) {
+        if (entries != null) for (Map.Entry<String, ?> entry : entries.entrySet()) {
 
             out.putNextEntry(new ZipEntry(entry.getKey()));
 
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/util/DynamicEJBImplTest.java b/container/openejb-core/src/test/java/org/apache/openejb/util/DynamicEJBImplTest.java
index e228979..1d9d0f1 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/util/DynamicEJBImplTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/util/DynamicEJBImplTest.java
@@ -59,39 +59,49 @@
 public class DynamicEJBImplTest {
     private static boolean initDone = false;
 
-    @EJB private UserDAO dao = null;
-    @EJB private UtilBean util = null;
-    @EJB private UserDAOChild child = null;
-    @EJB private DynamicCustomProxy custom = null;
+    @EJB
+    private UserDAO dao = null;
+    @EJB
+    private UtilBean util = null;
+    @EJB
+    private UserDAOChild child = null;
+    @EJB
+    private DynamicCustomProxy custom = null;
 
-    @Test public void custom() {
+    @Test
+    public void custom() {
         assertEquals("method = foo", custom.foo());
     }
 
-    @Before public void initDatabaseIfNotDone() {
+    @Before
+    public void initDatabaseIfNotDone() {
         if (!initDone) {
             util.init();
             initDone = true;
         }
     }
 
-    @After public void checkAll() {
+    @After
+    public void checkAll() {
         Collection<User> users = dao.findAll();
         assertEquals(10, users.size());
     }
 
-    @Test public void simple() {
+    @Test
+    public void simple() {
         User user = dao.findById(1);
         assertNotNull(user);
         assertEquals(1, user.getId());
     }
 
-    @Test public void findAll() {
+    @Test
+    public void findAll() {
         Collection<User> users = dao.findAll();
         assertEquals(10, users.size());
     }
 
-    @Test public void pagination() {
+    @Test
+    public void pagination() {
         Collection<User> users = dao.findAll(0, 5);
         assertEquals(5, users.size());
 
@@ -100,14 +110,16 @@
         assertEquals(7, users.iterator().next().getId());
     }
 
-    @Test public void persist() {
+    @Test
+    public void persist() {
         User u = new User();
         dao.save(u);
         assertNotNull(u.getId());
         util.remove(u);
     }
 
-    @Test public void remove() {
+    @Test
+    public void remove() {
         User u = new User();
         dao.save(u);
         assertNotNull(u.getId());
@@ -120,7 +132,8 @@
         }
     }
 
-    @Test public void merge() {
+    @Test
+    public void merge() {
         User u = new User();
         u.setInfo("one");
         dao.save(u);
@@ -134,7 +147,8 @@
         dao.delete(u);
     }
 
-    @Test public void oneCriteria() {
+    @Test
+    public void oneCriteria() {
         Collection<User> users = dao.findByName("foo");
         assertEquals(4, users.size());
         for (User user : users) {
@@ -142,7 +156,8 @@
         }
     }
 
-    @Test public void twoCriteria() {
+    @Test
+    public void twoCriteria() {
         Collection<User> users = dao.findByNameAndInfo("bar-1", "1");
         assertEquals(1, users.size());
 
@@ -151,13 +166,15 @@
         assertEquals("1", user.getInfo());
     }
 
-    @Test public void checkInjections() {
+    @Test
+    public void checkInjections() {
         UserDAO injection = util.getDao();
         assertNotNull(injection);
         assertEquals(10, injection.findAll().size());
     }
 
-    @Test public void query() {
+    @Test
+    public void query() {
         Map<String, String> params = new HashMap<String, String>();
         params.put("name", "foo");
 
@@ -182,7 +199,8 @@
         assertEquals(4, users.size());
     }
 
-    @Test public void inheritance() {
+    @Test
+    public void inheritance() {
         Map<String, String> params = new HashMap<String, String>();
         params.put("name", "foo");
 
@@ -207,7 +225,9 @@
         assertEquals(4, users.size());
     }
 
-    @Stateless @PersistenceContext(name = "pu") public static interface UserDAO {
+    @Stateless
+    @PersistenceContext(name = "pu")
+    public static interface UserDAO {
         User findById(long id);
 
         Collection<User> findByName(String name);
@@ -215,11 +235,15 @@
         Collection<User> findByNameAndInfo(String name, String info);
 
         Collection<User> findAll();
+
         Collection<User> findAll(int first, int max);
 
         Collection<User> namedQuery(String name, Map<String, ?> params, int first, int max);
+
         Collection<User> namedQuery(String name, int first, int max, Map<String, ?> params);
+
         Collection<User> namedQuery(String name, Map<String, ?> params);
+
         Collection<User> namedQuery(String name);
 
         Collection<User> query(String value, Map<String, ?> params);
@@ -231,16 +255,21 @@
         User update(User u);
     }
 
-    @Stateless @PersistenceContext(name = "pu") public static interface UserDAOChild extends UserDAO {
+    @Stateless
+    @PersistenceContext(name = "pu")
+    public static interface UserDAOChild extends UserDAO {
         // just inherited methods
     }
 
     @NamedQueries({
-        @NamedQuery(name = "dynamic-ejb-impl-test.query", query = "SELECT u FROM DynamicEJBImplTest$User AS u WHERE u.name LIKE :name"),
-        @NamedQuery(name = "dynamic-ejb-impl-test.all", query = "SELECT u FROM DynamicEJBImplTest$User AS u")
+            @NamedQuery(name = "dynamic-ejb-impl-test.query", query = "SELECT u FROM DynamicEJBImplTest$User AS u WHERE u.name LIKE :name"),
+            @NamedQuery(name = "dynamic-ejb-impl-test.all", query = "SELECT u FROM DynamicEJBImplTest$User AS u")
     })
-    @Entity public static class User {
-        @Id @GeneratedValue private long id;
+    @Entity
+    public static class User {
+        @Id
+        @GeneratedValue
+        private long id;
         private String name;
         private String info;
 
@@ -268,14 +297,18 @@
             this.info = info;
         }
 
-        @Override public String toString() {
+        @Override
+        public String toString() {
             return "User{info='" + info + '\'' + ", name='" + name + '\'' + ", id=" + id + '}';
         }
     }
 
-    @Singleton public static class UtilBean {
-        @PersistenceContext private EntityManager em;
-        @EJB private UserDAO dao = null;
+    @Singleton
+    public static class UtilBean {
+        @PersistenceContext
+        private EntityManager em;
+        @EJB
+        private UserDAO dao = null;
 
         public void init() {
             for (int i = 0; i < 10; i++) {
@@ -300,7 +333,8 @@
     }
 
     public static class Handler implements InvocationHandler {
-        @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+        @Override
+        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
             return "method = " + method.getName();
         }
     }
@@ -311,7 +345,8 @@
         public String foo();
     }
 
-    @Configuration public Properties config() {
+    @Configuration
+    public Properties config() {
         final Properties p = new Properties();
         p.put("dynamicEjbDatabase", "new://Resource?type=DataSource");
         p.put("dynamicEjbDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
@@ -319,7 +354,8 @@
         return p;
     }
 
-    @Module public EjbJar app() throws Exception {
+    @Module
+    public EjbJar app() throws Exception {
         EjbJar ejbJar = new EjbJar("dynamic");
         ejbJar.addEnterpriseBean(new SingletonBean(UtilBean.class));
         ejbJar.addEnterpriseBean(new SingletonBean(DynamicCustomProxy.class));
@@ -328,7 +364,8 @@
         return ejbJar;
     }
 
-    @Module public Persistence persistence() {
+    @Module
+    public Persistence persistence() {
         PersistenceUnit unit = new PersistenceUnit("pu");
         unit.addClass(User.class);
         unit.setProperty("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=true)");
diff --git a/container/openejb-core/src/test/resources/altddPU1/META-INF/persistence.xml b/container/openejb-core/src/test/resources/altddPU1/META-INF/persistence.xml
index af844a0..705fa62 100644
--- a/container/openejb-core/src/test/resources/altddPU1/META-INF/persistence.xml
+++ b/container/openejb-core/src/test/resources/altddPU1/META-INF/persistence.xml
@@ -1,29 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!--
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
 
-    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
+  <persistence-unit name="unit">
+    <jta-data-source>movieDatabase</jta-data-source>
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
 
-       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.
--->
-<!-- START SNIPPET: code -->
-<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
-
-    <persistence-unit name="unit">
-        <jta-data-source>movieDatabase</jta-data-source>
-        <properties>
-            <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>            
-        </properties>
-    </persistence-unit>
 </persistence>
-<!-- END SNIPPET: code -->
diff --git a/container/openejb-javaagent/pom.xml b/container/openejb-javaagent/pom.xml
index 72cb99a..ab12071 100644
--- a/container/openejb-javaagent/pom.xml
+++ b/container/openejb-javaagent/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>container</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-javaagent</artifactId>
diff --git a/container/openejb-jaxbagent/pom.xml b/container/openejb-jaxbagent/pom.xml
index 1d1bdc3..aa78b1f 100644
--- a/container/openejb-jaxbagent/pom.xml
+++ b/container/openejb-jaxbagent/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>container</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-jaxbagent</artifactId>
diff --git a/container/openejb-jee-accessors/pom.xml b/container/openejb-jee-accessors/pom.xml
index 2fd4805..5331783 100644
--- a/container/openejb-jee-accessors/pom.xml
+++ b/container/openejb-jee-accessors/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>container</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-jee-accessors</artifactId>
diff --git a/container/openejb-jee/pom.xml b/container/openejb-jee/pom.xml
index 25632f1..096142e 100644
--- a/container/openejb-jee/pom.xml
+++ b/container/openejb-jee/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>container</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-jee</artifactId>
diff --git a/container/openejb-jee/src/main/java/org/apache/openejb/jee/ResourceRef.java b/container/openejb-jee/src/main/java/org/apache/openejb/jee/ResourceRef.java
index dc68733..680b6c4 100644
--- a/container/openejb-jee/src/main/java/org/apache/openejb/jee/ResourceRef.java
+++ b/container/openejb-jee/src/main/java/org/apache/openejb/jee/ResourceRef.java
@@ -93,6 +93,8 @@
     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
     @XmlID
     protected String id;
+    @XmlTransient
+    protected String origin;
 
     public ResourceRef() {
     }
@@ -251,6 +253,14 @@
         this.id = value;
     }
 
+    public String getOrigin() {
+        return origin;
+    }
+
+    public void setOrigin(String origin) {
+        this.origin = origin;
+    }
+
     @Override
     public String toString() {
         return "ResourceRef{" +
diff --git a/container/openejb-jee/src/main/java/org/apache/openejb/jee/jpa/unit/PersistenceUnit.java b/container/openejb-jee/src/main/java/org/apache/openejb/jee/jpa/unit/PersistenceUnit.java
index 171ca84..7866b84 100644
--- a/container/openejb-jee/src/main/java/org/apache/openejb/jee/jpa/unit/PersistenceUnit.java
+++ b/container/openejb-jee/src/main/java/org/apache/openejb/jee/jpa/unit/PersistenceUnit.java
@@ -275,6 +275,16 @@
     }
 
     public ValidationMode getValidationMode() {
+        if (validationMode == null) {
+            final String propConfig = getProperty("javax.persistence.validation.mode");
+            if (propConfig != null) {
+                try {
+                    validationMode = ValidationMode.valueOf(propConfig.toUpperCase());
+                } catch (IllegalArgumentException iae) { // can happen since some provider allow more than the enum
+                    // no-op
+                }
+            }
+        }
         return (validationMode == null) ? ValidationMode.AUTO : validationMode;
     }
 
diff --git a/container/openejb-jpa-integration/pom.xml b/container/openejb-jpa-integration/pom.xml
index 3ef14f8..cf4bc1b 100644
--- a/container/openejb-jpa-integration/pom.xml
+++ b/container/openejb-jpa-integration/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>container</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/container/openejb-junit/pom.xml b/container/openejb-junit/pom.xml
index 3d9821f..1228f1b 100644
--- a/container/openejb-junit/pom.xml
+++ b/container/openejb-junit/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>container</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-junit</artifactId>
diff --git a/container/openejb-loader/pom.xml b/container/openejb-loader/pom.xml
index 09d5433..1ca0d42 100644
--- a/container/openejb-loader/pom.xml
+++ b/container/openejb-loader/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>container</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-loader</artifactId>
diff --git a/container/openejb-loader/src/main/java/org/apache/openejb/loader/Files.java b/container/openejb-loader/src/main/java/org/apache/openejb/loader/Files.java
index 90906a4..555d4d7 100644
--- a/container/openejb-loader/src/main/java/org/apache/openejb/loader/Files.java
+++ b/container/openejb-loader/src/main/java/org/apache/openejb/loader/Files.java
@@ -29,9 +29,9 @@
  */
 public class Files {
 
-    public static File path(String... parts) {
+    public static File path(final String... parts) {
         File dir = null;
-        for (String part : parts) {
+        for (final String part : parts) {
             if (dir == null) {
                 dir = new File(part);
             } else {
@@ -39,15 +39,25 @@
             }
         }
 
-        return dir;
+        return null != dir ? dir.getAbsoluteFile() : dir;
     }
 
-    public static File path(File dir, String... parts) {
-        for (String part : parts) {
-            dir = new File(dir, part);
+    public static File path(final File dir, final String... parts) {
+        File base = dir;
+        int idx = 0;
+        if (parts.length >= 1) {
+            final File partFile = new File(parts[0]);
+            if (partFile.exists() && partFile.isAbsolute()) {
+                base = partFile;
+                idx = 1;
+            }
         }
 
-        return dir;
+        for (int i = idx; i < parts.length; i++) {
+            base = new File(base, parts[i]);
+        }
+
+        return base.getAbsoluteFile();
     }
 
     public static List<File> collect(final File dir, final String regex) {
@@ -57,66 +67,76 @@
     public static List<File> collect(final File dir, final Pattern pattern) {
         return collect(dir, new FileFilter() {
             @Override
-            public boolean accept(File file) {
+            public boolean accept(final File file) {
                 return pattern.matcher(file.getName()).matches();
             }
         });
     }
 
 
-    public static List<File> collect(File dir, FileFilter filter) {
+    public static List<File> collect(final File dir, final FileFilter filter) {
         final List<File> accepted = new ArrayList<File>();
         if (filter.accept(dir)) accepted.add(dir);
 
         final File[] files = dir.listFiles();
-        if (files != null) for (File file : files) {
+        if (files != null) for (final File file : files) {
             accepted.addAll(collect(file, filter));
         }
 
         return accepted;
     }
 
-    public static File exists(File file, String s) {
-        if (!file.exists()) throw new FileRuntimeException(s + " does not exist: " + file.getAbsolutePath());
+    public static File exists(final File file, final String s) {
+        if (!file.exists()) throw new FileDoesNotExistException(s + " does not exist: " + file.getAbsolutePath());
         return file;
     }
 
-    public static File exists(File file) {
-        if (!file.exists()) throw new FileRuntimeException("Does not exist: " + file.getAbsolutePath());
+    public static File exists(final File file) {
+        if (!file.exists()) throw new FileDoesNotExistException("Does not exist: " + file.getAbsolutePath());
         return file;
     }
 
-    public static File dir(File file) {
+    public static File dir(final File file) {
         if (!file.isDirectory()) throw new FileRuntimeException("Not a directory: " + file.getAbsolutePath());
         return file;
     }
 
-    public static File file(File file) {
+    public static File file(final File file) {
         exists(file);
         if (!file.isFile()) throw new FileRuntimeException("Not a file: " + file.getAbsolutePath());
         return file;
     }
 
-    public static File writable(File file) {
+    public static File notHidden(final File file) {
+        exists(file);
+        if (file.isHidden()) throw new FileRuntimeException("File is hidden: " + file.getAbsolutePath());
+        return file;
+    }
+
+    public static File writable(final File file) {
         if (!file.canWrite()) throw new FileRuntimeException("Not writable: " + file.getAbsolutePath());
         return file;
     }
 
-    public static File readable(File file) {
+    public static File readable(final File file) {
         if (!file.canRead()) throw new FileRuntimeException("Not readable: " + file.getAbsolutePath());
         return file;
     }
 
-    public static File readableFile(File file) {
+    public static File readableFile(final File file) {
         return readable(file(file));
     }
 
-    public static File mkdir(File file) {
+    public static File mkdir(final File file) {
         if (file.exists()) return file;
         if (!file.mkdirs()) throw new FileRuntimeException("Cannot mkdir: " + file.getAbsolutePath());
         return file;
     }
 
+    public static File mkdir(final File file, final String name) {
+        return mkdir(new File(file, name));
+    }
+
     public static File tmpdir() {
         try {
             final File file = File.createTempFile("temp", "dir");
@@ -129,12 +149,12 @@
         }
     }
 
-    public static File mkparent(File file) {
+    public static File mkparent(final File file) {
         mkdirs(file.getParentFile());
         return file;
     }
 
-    public static File mkdirs(File file) {
+    public static File mkdirs(final File file) {
 
         if (!file.exists()) {
 
@@ -151,51 +171,82 @@
     static final List<String> delete = new ArrayList<String>();
 
     static {
-        Runtime.getRuntime().addShutdownHook(new Thread() {
-            @Override
-            public void run() {
-                delete();
-            }
-        });
+        final ClassLoader loader = Thread.currentThread().getContextClassLoader();
+        Thread.currentThread().setContextClassLoader(Files.class.getClassLoader());
+        try {
+            final Thread deleteShutdownHook = new Thread() {
+                @Override
+                public void run() {
+                    delete();
+                }
+            };
+            Runtime.getRuntime().addShutdownHook(deleteShutdownHook);
+        } finally {
+            Thread.currentThread().setContextClassLoader(loader);
+        }
     }
 
-    public static void deleteOnExit(File file) {
+    public static void deleteOnExit(final File file) {
         delete.add(file.getAbsolutePath());
     }
 
     private static void delete() {
-        for (String path : delete) {
+        for (final String path : delete) {
             delete(new File(path));
         }
     }
 
-    public static void delete(File file) {
+    public static void delete(final File file) {
         if (file.exists()) {
             if (file.isDirectory()) {
-                for (File f : file.listFiles()) {
-                    delete(f);
+                final File[] files = file.listFiles();
+                if (null != files) {
+                    for (final File f : files) {
+                        delete(f);
+                    }
                 }
             }
 
-            if(!file.delete()){
-                file.deleteOnExit();
+            if (!file.delete()) {
+                try {
+                    file.deleteOnExit();
+                } catch (Throwable e) {
+                    //Ignore
+                }
             }
         }
     }
 
-    public static File select(File dir, String pattern) {
+    public static void remove(final File file) {
+        if (file == null) return;
+        if (!file.exists()) return;
+
+        if (file.isDirectory()) {
+            final File[] files = file.listFiles();
+            if (files != null) {
+                for (final File child : files) {
+                    remove(child);
+                }
+            }
+        }
+        if (!file.delete()) {
+            throw new IllegalStateException("Could not delete file: " + file.getAbsolutePath());
+        }
+    }
+
+    public static File select(final File dir, final String pattern) {
         final List<File> matches = collect(dir, pattern);
         if (matches.size() == 0) throw new IllegalStateException(String.format("Missing '%s'", pattern));
         if (matches.size() > 1) throw new IllegalStateException(String.format("Too many found '%s': %s", pattern, join(", ", matches)));
         return matches.get(0);
     }
 
-    private static String join(String delimiter, Collection<File> collection) {
+    private static String join(final String delimiter, final Collection<File> collection) {
         if (collection.size() == 0) {
             return "";
         }
-        StringBuilder sb = new StringBuilder();
-        for (File obj : collection) {
+        final StringBuilder sb = new StringBuilder();
+        for (final File obj : collection) {
             sb.append(obj.getName()).append(delimiter);
         }
         return sb.substring(0, sb.length() - delimiter.length());
@@ -210,4 +261,15 @@
             super(e);
         }
     }
+
+    public static class FileDoesNotExistException extends FileRuntimeException {
+        public FileDoesNotExistException(final String str) {
+            super(str);
+        }
+
+        public FileDoesNotExistException(final Exception e) {
+            super(e);
+        }
+    }
+
 }
diff --git a/container/openejb-loader/src/main/java/org/apache/openejb/loader/IO.java b/container/openejb-loader/src/main/java/org/apache/openejb/loader/IO.java
index 44f2467..2b9e0aa 100644
--- a/container/openejb-loader/src/main/java/org/apache/openejb/loader/IO.java
+++ b/container/openejb-loader/src/main/java/org/apache/openejb/loader/IO.java
@@ -16,25 +16,7 @@
  */
 package org.apache.openejb.loader;
 
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.Closeable;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.Flushable;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
+import java.io.*;
 import java.net.Proxy;
 import java.net.ProxySelector;
 import java.net.URI;
@@ -43,6 +25,8 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import java.util.zip.ZipInputStream;
 import java.util.zip.ZipOutputStream;
 
@@ -54,11 +38,11 @@
 
     public static String readFileAsString(final URI uri) throws IOException {
         final StringBuilder builder = new StringBuilder("");
-        for (Proxy proxy : ProxySelector.getDefault().select(uri)) {
-            InputStream is;
+        for (final Proxy proxy : ProxySelector.getDefault().select(uri)) {
+            final InputStream is;
 
             try {
-                URLConnection urlConnection = uri.toURL().openConnection(proxy);
+                final URLConnection urlConnection = uri.toURL().openConnection(proxy);
                 urlConnection.setConnectTimeout(MAX_TIMEOUT);
                 is = urlConnection.getInputStream();
             } catch (IOException e) {
@@ -79,11 +63,11 @@
         return builder.toString();
     }
 
-    public static Properties readProperties(URL resource) throws IOException {
+    public static Properties readProperties(final URL resource) throws IOException {
         return readProperties(resource, new Properties());
     }
 
-    public static Properties readProperties(URL resource, Properties properties) throws IOException {
+    public static Properties readProperties(final URL resource, final Properties properties) throws IOException {
         return readProperties(read(resource), properties);
     }
 
@@ -91,64 +75,65 @@
         return readProperties(resource, new Properties());
     }
 
-    public static Properties readProperties(File resource, Properties properties) throws IOException {
+    public static Properties readProperties(final File resource, final Properties properties) throws IOException {
         return readProperties(read(resource), properties);
     }
 
     /**
      * Reads and closes the input stream
-     * @param in
-     * @param properties
-     * @return
+     *
+     * @param in         InputStream
+     * @param properties Properties
+     * @return Properties
      * @throws IOException
      */
-    public static Properties readProperties(InputStream in, Properties properties) throws IOException {
+    public static Properties readProperties(final InputStream in, final Properties properties) throws IOException {
         if (in == null) throw new NullPointerException("InputStream is null");
         if (properties == null) throw new NullPointerException("Properties is null");
         try {
             properties.load(in);
-        } finally{
+        } finally {
             close(in);
         }
         return properties;
     }
 
-    public static String readString(URL url) throws IOException {
+    public static String readString(final URL url) throws IOException {
         final InputStream in = url.openStream();
         try {
-            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
+            final BufferedReader reader = new BufferedReader(new InputStreamReader(in));
             return reader.readLine();
         } finally {
             close(in);
         }
     }
 
-    public static String readString(File file) throws IOException {
+    public static String readString(final File file) throws IOException {
         final FileReader in = new FileReader(file);
         try {
-            BufferedReader reader = new BufferedReader(in);
+            final BufferedReader reader = new BufferedReader(in);
             return reader.readLine();
         } finally {
             close(in);
         }
     }
 
-    public static String slurp(File file) throws IOException {
+    public static String slurp(final File file) throws IOException {
         return slurp(read(file));
     }
 
 
-    public static String slurp(URL url) throws IOException {
+    public static String slurp(final URL url) throws IOException {
         return slurp(url.openStream());
     }
 
-    public static String slurp(InputStream in) throws IOException {
-        ByteArrayOutputStream out = new ByteArrayOutputStream();
+    public static String slurp(final InputStream in) throws IOException {
+        final ByteArrayOutputStream out = new ByteArrayOutputStream();
         copy(in, out);
         return new String(out.toByteArray());
     }
 
-    public static void writeString(File file, String string) throws IOException {
+    public static void writeString(final File file, final String string) throws IOException {
         final FileWriter out = new FileWriter(file);
         try {
             final BufferedWriter bufferedWriter = new BufferedWriter(out);
@@ -183,10 +168,10 @@
         if (destDir == null) {
             throw new NullPointerException("Destination must not be null");
         }
-        if (srcDir.exists() == false) {
+        if (!srcDir.exists()) {
             throw new FileNotFoundException("Source '" + srcDir + "' does not exist");
         }
-        if (srcDir.isDirectory() == false) {
+        if (!srcDir.isDirectory()) {
             throw new IOException("Source '" + srcDir + "' exists but is not a directory");
         }
         if (srcDir.getCanonicalPath().equals(destDir.getCanonicalPath())) {
@@ -196,11 +181,11 @@
         // Cater for destination being directory within the source directory (see IO-141)
         List<String> exclusionList = null;
         if (destDir.getCanonicalPath().startsWith(srcDir.getCanonicalPath())) {
-            File[] srcFiles = srcDir.listFiles();
+            final File[] srcFiles = srcDir.listFiles();
             if (srcFiles != null && srcFiles.length > 0) {
                 exclusionList = new ArrayList<String>(srcFiles.length);
-                for (File srcFile : srcFiles) {
-                    File copiedFile = new File(destDir, srcFile.getName());
+                for (final File srcFile : srcFiles) {
+                    final File copiedFile = new File(destDir, srcFile.getName());
                     exclusionList.add(copiedFile.getCanonicalPath());
                 }
             }
@@ -214,18 +199,18 @@
             throw new IOException("Failed to list contents of " + srcDir);
         }
         if (destDir.exists()) {
-            if (destDir.isDirectory() == false) {
+            if (!destDir.isDirectory()) {
                 throw new IOException("Destination '" + destDir + "' exists but is not a directory");
             }
         } else {
-            if (destDir.mkdirs() == false) {
+            if (!destDir.mkdirs()) {
                 throw new IOException("Destination '" + destDir + "' directory cannot be created");
             }
         }
-        if (destDir.canWrite() == false) {
+        if (!destDir.canWrite()) {
             throw new IOException("Destination '" + destDir + "' cannot be written to");
         }
-        for (File file : files) {
+        for (final File file : files) {
             final File copiedFile = new File(destDir, file.getName());
             if (exclusionList == null || !exclusionList.contains(file.getCanonicalPath())) {
                 if (file.isDirectory()) {
@@ -237,7 +222,7 @@
         }
     }
 
-    public static void copy(File from, OutputStream to) throws IOException {
+    public static void copy(final File from, final OutputStream to) throws IOException {
         final InputStream read = read(from);
         try {
             copy(read, to);
@@ -246,7 +231,7 @@
         }
     }
 
-    public static void copy(URL from, OutputStream to) throws IOException {
+    public static void copy(final URL from, final OutputStream to) throws IOException {
         final InputStream read = read(from);
         try {
             copy(read, to);
@@ -255,7 +240,7 @@
         }
     }
 
-    public static void copy(InputStream from, File to) throws IOException {
+    public static void copy(final InputStream from, final File to) throws IOException {
         final OutputStream write = write(to);
         try {
             copy(from, write);
@@ -264,7 +249,7 @@
         }
     }
 
-    public static void copy(InputStream from, File to, boolean append) throws IOException {
+    public static void copy(final InputStream from, final File to, final boolean append) throws IOException {
         final OutputStream write = write(to, append);
         try {
             copy(from, write);
@@ -273,8 +258,8 @@
         }
     }
 
-    public static void copy(InputStream from, OutputStream to) throws IOException {
-        byte[] buffer = new byte[1024];
+    public static void copy(final InputStream from, final OutputStream to) throws IOException {
+        final byte[] buffer = new byte[1024];
         int length;
         while ((length = from.read(buffer)) != -1) {
             to.write(buffer, 0, length);
@@ -282,76 +267,78 @@
         to.flush();
     }
 
-    public static void copy(byte[] from, File to) throws IOException {
+    public static void copy(final byte[] from, final File to) throws IOException {
         copy(new ByteArrayInputStream(from), to);
     }
 
-    public static void copy(byte[] from, OutputStream to) throws IOException {
+    public static void copy(final byte[] from, final OutputStream to) throws IOException {
         copy(new ByteArrayInputStream(from), to);
     }
 
-    public static ZipOutputStream zip(File file) throws IOException {
+    public static ZipOutputStream zip(final File file) throws IOException {
         final OutputStream write = write(file);
         return new ZipOutputStream(write);
     }
 
-    public static ZipInputStream unzip(File file) throws IOException {
+    public static ZipInputStream unzip(final File file) throws IOException {
         final InputStream read = read(file);
         return new ZipInputStream(read);
     }
 
-    public static void close(Closeable closeable) {
+    public static void close(final Closeable closeable) {
         if (closeable == null) return;
         try {
-            if (closeable instanceof Flushable) {
+            if (Flushable.class.isInstance(closeable)) {
                 ((Flushable) closeable).flush();
             }
-        } catch (IOException e) {
+        } catch (Throwable e) {
+            //Ignore
         }
         try {
             closeable.close();
-        } catch (IOException e) {
+        } catch (Throwable e) {
+            //Ignore
         }
     }
 
-    public static boolean delete(File file) {
+    public static boolean delete(final File file) {
         if (file == null) return false;
         if (!file.delete()) {
-            System.err.println("Delete failed " + file.getAbsolutePath());
+            Logger.getLogger(IO.class.getName()).log(Level.WARNING, "Delete failed on: " + file.getAbsolutePath());
             return false;
         }
 
         return true;
     }
 
-    public static OutputStream write(File destination) throws FileNotFoundException {
+    public static OutputStream write(final File destination) throws FileNotFoundException {
         final OutputStream out = new FileOutputStream(destination);
         return new BufferedOutputStream(out, 32768);
     }
 
-    public static OutputStream write(File destination, boolean append) throws FileNotFoundException {
+    public static OutputStream write(final File destination, final boolean append) throws FileNotFoundException {
         final OutputStream out = new FileOutputStream(destination, append);
         return new BufferedOutputStream(out, 32768);
     }
 
-    public static InputStream read(File source) throws FileNotFoundException {
+    public static InputStream read(final File source) throws FileNotFoundException {
         final InputStream in = new FileInputStream(source);
         return new BufferedInputStream(in, 32768);
     }
 
-    public static InputStream read(String content) {
+    public static InputStream read(final String content) {
         return read(content.getBytes());
     }
 
-    public static InputStream read(String content, String encoding) throws UnsupportedEncodingException {
+    public static InputStream read(final String content, final String encoding) throws UnsupportedEncodingException {
         return read(content.getBytes(encoding));
     }
 
-    public static InputStream read(byte[] content) {
+    public static InputStream read(final byte[] content) {
         return new ByteArrayInputStream(content);
     }
 
-    public static InputStream read(URL url) throws IOException {
+    public static InputStream read(final URL url) throws IOException {
         return url.openStream();
     }
 }
\ No newline at end of file
diff --git a/container/openejb-loader/src/main/java/org/apache/openejb/loader/ProvisioningUtil.java b/container/openejb-loader/src/main/java/org/apache/openejb/loader/ProvisioningUtil.java
index 9be477a..7bfdeb2 100644
--- a/container/openejb-loader/src/main/java/org/apache/openejb/loader/ProvisioningUtil.java
+++ b/container/openejb-loader/src/main/java/org/apache/openejb/loader/ProvisioningUtil.java
@@ -71,10 +71,10 @@
 
     public static InputStream inputStreamTryingProxies(final URI source) throws Exception {
         final URL url = source.toURL();
-        for (Proxy proxy : ProxySelector.getDefault().select(source)) {
+        for (final Proxy proxy : ProxySelector.getDefault().select(source)) {
             // try to connect
             try {
-                URLConnection urlConnection = url.openConnection(proxy);
+                final URLConnection urlConnection = url.openConnection(proxy);
                 urlConnection.setConnectTimeout(CONNECT_TIMEOUT);
                 return new BufferedInputStream(urlConnection.getInputStream());
             } catch (IOException e) {
@@ -92,7 +92,7 @@
         return location.substring(idx + 1, location.length());
     }
 
-    public static String realLocation(String rawLocation) {
+    public static String realLocation(final String rawLocation) {
         if (rawLocation.startsWith(HTTP_PREFIX)) {
             final File file = cacheFile(lastPart(rawLocation));
 
@@ -117,7 +117,7 @@
     }
 
     public static void addAdditionalLibraries() throws IOException {
-        File conf = SystemInstance.get().getConf(ADDITIONAL_LIB_CONFIG);
+        final File conf = SystemInstance.get().getConf(ADDITIONAL_LIB_CONFIG);
         if (conf == null || !conf.exists()) {
             return;
         }
@@ -127,18 +127,18 @@
         final List<String> libToCopy = new ArrayList<String>();
         final String toCopy = additionalLibProperties.getProperty(JAR_KEY);
         if (toCopy != null) {
-            for (String lib : toCopy.split(",")) {
+            for (final String lib : toCopy.split(",")) {
                 libToCopy.add(realLocation(lib.trim()));
             }
         }
         final String toExtract = additionalLibProperties.getProperty(ZIP_KEY);
         if (toExtract != null) {
-            for (String zip : toExtract.split(",")) {
+            for (final String zip : toExtract.split(",")) {
                 libToCopy.addAll(extract(realLocation(zip)));
             }
         }
 
-        File destination;
+        final File destination;
         if (additionalLibProperties.containsKey(DESTINATION_KEY)) {
             destination = new File(additionalLibProperties.getProperty(DESTINATION_KEY));
         } else {
@@ -148,7 +148,7 @@
             Files.mkdirs(destination);
         }
 
-        for (String lib : libToCopy) {
+        for (final String lib : libToCopy) {
             copy(new File(lib), destination);
         }
     }
@@ -194,7 +194,7 @@
             return Collections.emptyList();
         }
 
-        for (File file : files) {
+        for (final File file : files) {
             if (file.isDirectory()) {
                 libs.addAll(list(file));
             } else {
diff --git a/container/pom.xml b/container/pom.xml
index 147546d..9455b77 100644
--- a/container/pom.xml
+++ b/container/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>openejb</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>container</artifactId>
diff --git a/deps/mbean-annotation-api/pom.xml b/deps/mbean-annotation-api/pom.xml
index d0c634c..ba3fb3b 100644
--- a/deps/mbean-annotation-api/pom.xml
+++ b/deps/mbean-annotation-api/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>deps</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <artifactId>mbean-annotation-api</artifactId>
   <name>OpenEJB :: Dependencies :: MBean Annotation API</name>
diff --git a/deps/pom.xml b/deps/pom.xml
index 5fbe860..bc2eacf 100644
--- a/deps/pom.xml
+++ b/deps/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>openejb</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>deps</artifactId>
diff --git a/examples/access-timeout-meta/pom.xml b/examples/access-timeout-meta/pom.xml
index c35e95f..158c178 100644
--- a/examples/access-timeout-meta/pom.xml
+++ b/examples/access-timeout-meta/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>access-timeout-meta</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: @AccessTimeout (Meta)</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -89,4 +89,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/access-timeout/pom.xml b/examples/access-timeout/pom.xml
index 2a7cfa8..df63317 100644
--- a/examples/access-timeout/pom.xml
+++ b/examples/access-timeout/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>access-timeout</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: @AccessTimeout</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -89,4 +89,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/alternate-descriptors/pom.xml b/examples/alternate-descriptors/pom.xml
index bd41222..3cb0cd1 100644
--- a/examples/alternate-descriptors/pom.xml
+++ b/examples/alternate-descriptors/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>alternate-descriptors</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Alternate Descriptors</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/applet/pom.xml b/examples/applet/pom.xml
index 60b4092..e0f46bb 100644
--- a/examples/applet/pom.xml
+++ b/examples/applet/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz.applet</groupId>
   <artifactId>applet</artifactId>
   <packaging>war</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Web Examples :: Signed Applet EJB Client</name>
   <url>http://openejb.apache.org</url>
   <properties>
@@ -44,7 +44,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-client</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -112,7 +112,7 @@
                 <artifactItem>
                   <groupId>org.apache.openejb</groupId>
                   <artifactId>openejb-client</artifactId>
-                  <version>4.5.1-SNAPSHOT</version>
+                  <version>4.5.1</version>
                   <outputDirectory>${project.build.directory}/${project.build.finalName}</outputDirectory>
                   <destFileName>openejb-client.jar</destFileName>
                 </artifactItem>
diff --git a/examples/application-composer/pom.xml b/examples/application-composer/pom.xml
index 317c6fb..cc43b70 100644
--- a/examples/application-composer/pom.xml
+++ b/examples/application-composer/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>application-composer</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Application Composer</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -71,7 +71,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
 
diff --git a/examples/applicationexception/pom.xml b/examples/applicationexception/pom.xml
index 8a3ad5b..4e2e84c 100644
--- a/examples/applicationexception/pom.xml
+++ b/examples/applicationexception/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>applicationexception</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: @ApplicationException inheritance</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -81,7 +81,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/async-methods/pom.xml b/examples/async-methods/pom.xml
index b5a0ae2..decb905 100644
--- a/examples/async-methods/pom.xml
+++ b/examples/async-methods/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>async-methods</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: @Asynchronous Methods</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -89,4 +89,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/bean-validation-design-by-contract/pom.xml b/examples/bean-validation-design-by-contract/pom.xml
index b1daf5e..8199239 100755
--- a/examples/bean-validation-design-by-contract/pom.xml
+++ b/examples/bean-validation-design-by-contract/pom.xml
@@ -20,11 +20,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>bean-validation-design-by-contract</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Bean Validation Design By Contract</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <openejb.version>4.5.1-SNAPSHOT</openejb.version>
+    <openejb.version>4.5.1</openejb.version>
   </properties>
   <build>
     <defaultGoal>install</defaultGoal>
@@ -66,7 +66,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -86,4 +86,4 @@
     </snapshotRepository>
   </distributionManagement>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/cdi-alternative-and-stereotypes/pom.xml b/examples/cdi-alternative-and-stereotypes/pom.xml
index e5db994..ff0434e 100644
--- a/examples/cdi-alternative-and-stereotypes/pom.xml
+++ b/examples/cdi-alternative-and-stereotypes/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>cdi-alternative-and-stereotypes</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: CDI Stereotypes</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -89,4 +89,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/cdi-application-scope/pom.xml b/examples/cdi-application-scope/pom.xml
index c54ce82..36db77f 100644
--- a/examples/cdi-application-scope/pom.xml
+++ b/examples/cdi-application-scope/pom.xml
@@ -14,7 +14,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>cdi-application-scope</artifactId>
   <name>OpenEJB :: Examples :: CDI Application Scope</name>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
 
   <build>
     <defaultGoal>install</defaultGoal>
@@ -53,7 +53,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/cdi-basic/pom.xml b/examples/cdi-basic/pom.xml
index 6d4aa9a..de79a92 100644
--- a/examples/cdi-basic/pom.xml
+++ b/examples/cdi-basic/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>cdi-basic</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Basic CDI</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -66,7 +66,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/cdi-ejbcontext-jaas/pom.xml b/examples/cdi-ejbcontext-jaas/pom.xml
index 772f372..61189f1 100644
--- a/examples/cdi-ejbcontext-jaas/pom.xml
+++ b/examples/cdi-ejbcontext-jaas/pom.xml
@@ -23,7 +23,7 @@
 
   <groupId>org.superbiz</groupId>
   <artifactId>cdi-ejbcontext-jaas</artifactId>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <packaging>war</packaging>
   <name>OpenEJB :: Examples :: CDI, EJBContext and JAAS</name>
 
@@ -31,7 +31,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
@@ -64,7 +64,7 @@
       <plugin>
         <groupId>org.apache.openejb.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>1.0.1-SNAPSHOT</version>
+        <version>1.1.0</version>
         <configuration>
           <systemVariables>
             <java.security.auth.login.config>${project.build.directory}/apache-tomee/conf/login.config</java.security.auth.login.config>
diff --git a/examples/cdi-events/pom.xml b/examples/cdi-events/pom.xml
index 97899e1..6df5d72 100644
--- a/examples/cdi-events/pom.xml
+++ b/examples/cdi-events/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>cdi-events</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: CDI Events</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <!-- to show events we log them in the test -->
diff --git a/examples/cdi-interceptors/pom.xml b/examples/cdi-interceptors/pom.xml
index 39a9e89..f5de090 100644
--- a/examples/cdi-interceptors/pom.xml
+++ b/examples/cdi-interceptors/pom.xml
@@ -18,7 +18,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>cdi-interceptors</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: CDI Interceptors</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -64,7 +64,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/cdi-produces-disposes/pom.xml b/examples/cdi-produces-disposes/pom.xml
index f9328e2..5c5a28a 100644
--- a/examples/cdi-produces-disposes/pom.xml
+++ b/examples/cdi-produces-disposes/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>cdi-produces-disposes</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: CDI-Disposes</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -71,7 +71,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/cdi-produces-field/pom.xml b/examples/cdi-produces-field/pom.xml
index d2e4346..50d18f9 100644
--- a/examples/cdi-produces-field/pom.xml
+++ b/examples/cdi-produces-field/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>

   <artifactId>cdi-produces-field</artifactId>

   <packaging>jar</packaging>

-  <version>1.1-SNAPSHOT</version>

+  <version>1.1.0</version>

   <name>OpenEJB :: Examples :: CDI-Field Producer</name>

   <properties>

     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

@@ -71,7 +71,7 @@
     <dependency>

       <groupId>org.apache.openejb</groupId>

       <artifactId>openejb-core</artifactId>

-      <version>4.5.1-SNAPSHOT</version>

+      <version>4.5.1</version>

       <scope>test</scope>

     </dependency>

   </dependencies>

diff --git a/examples/cdi-query/pom.xml b/examples/cdi-query/pom.xml
deleted file mode 100644
index fa94955..0000000
--- a/examples/cdi-query/pom.xml
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <groupId>org.superbiz</groupId>
-  <artifactId>cdi-query</artifactId>
-  <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
-  <name>OpenEJB :: Examples :: CDI Query</name>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.openejb</groupId>
-      <artifactId>javaee-api</artifactId>
-      <version>6.0-4</version>
-      <scope>provided</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>com.mysema.querydsl</groupId>
-      <artifactId>querydsl-jpa</artifactId>
-      <version>2.8.0</version>
-    </dependency>
-    <dependency>
-      <groupId>com.ctp.cdi.query</groupId>
-      <artifactId>cdi-query-api</artifactId>
-      <version>1.0.0.Alpha5-SNAPSHOT</version>
-    </dependency>
-    <dependency>
-      <groupId>com.ctp.cdi.query</groupId>
-      <artifactId>cdi-query-impl</artifactId>
-      <version>1.0.0.Alpha5-SNAPSHOT</version>
-      <scope>runtime</scope>
-      <exclusions>
-        <exclusion>
-          <groupId>org.jboss.arquillian.junit</groupId>
-          <artifactId>arquillian-junit-container</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jboss.arquillian.protocol</groupId>
-          <artifactId>arquillian-protocol-servlet</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>4.10</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.openejb</groupId>
-      <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
-      <scope>provided</scope>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <defaultGoal>install</defaultGoal>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>2.4</version>
-        <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-  <repositories>
-    <repository>
-      <id>apache-m2-snapshot</id>
-      <name>Apache Snapshot Repository</name>
-      <url>http://repository.apache.org/snapshots</url>
-    </repository>
-    <repository>
-      <id>ctp-consulting-m2-snapshot</id>
-      <name>Ctp Consulting Snapshot Repository</name>
-      <url>https://repository-ctpconsulting.forge.cloudbees.com/snapshot/</url>
-    </repository>
-  </repositories>
-
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-  </properties>
-
-  <!--
-  This section allows you to configure where to publish libraries for sharing.
-  It is not required and may be deleted.  For more information see:
-  http://maven.apache.org/plugins/maven-deploy-plugin/
-  -->
-  <distributionManagement>
-    <repository>
-      <id>localhost</id>
-      <url>file://${basedir}/target/repo/</url>
-    </repository>
-    <snapshotRepository>
-      <id>localhost</id>
-      <url>file://${basedir}/target/snapshot-repo/</url>
-    </snapshotRepository>
-  </distributionManagement>
-</project>
-
diff --git a/examples/cdi-query/src/main/java/org/superbiz/dynamic/EntityManagerProducer.java b/examples/cdi-query/src/main/java/org/superbiz/dynamic/EntityManagerProducer.java
deleted file mode 100644
index 0fcbe12..0000000
--- a/examples/cdi-query/src/main/java/org/superbiz/dynamic/EntityManagerProducer.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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.superbiz.dynamic;
-
-
-import javax.ejb.Stateless;
-import javax.enterprise.inject.Produces;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-
-@Stateless
-public class EntityManagerProducer {
-    @PersistenceContext
-    @Produces
-    private EntityManager em;
-}
diff --git a/examples/cdi-query/src/main/java/org/superbiz/dynamic/User.java b/examples/cdi-query/src/main/java/org/superbiz/dynamic/User.java
deleted file mode 100644
index e8a1428..0000000
--- a/examples/cdi-query/src/main/java/org/superbiz/dynamic/User.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.superbiz.dynamic;
-
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-
-@Entity
-public class User {
-    @Id
-    @GeneratedValue
-    private long id;
-    private String name;
-    private int age;
-
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public int getAge() {
-        return age;
-    }
-
-    public void setAge(int age) {
-        this.age = age;
-    }
-}
diff --git a/examples/cdi-query/src/main/java/org/superbiz/dynamic/UserDao.java b/examples/cdi-query/src/main/java/org/superbiz/dynamic/UserDao.java
deleted file mode 100644
index f973499..0000000
--- a/examples/cdi-query/src/main/java/org/superbiz/dynamic/UserDao.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * 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.superbiz.dynamic;
-
-import com.ctp.cdi.query.Dao;
-import com.ctp.cdi.query.EntityDao;
-
-@Dao
-public interface UserDao extends EntityDao<User, Long> {
-}
diff --git a/examples/cdi-query/src/main/resources/META-INF/persistence.xml b/examples/cdi-query/src/main/resources/META-INF/persistence.xml
deleted file mode 100644
index 97d2ba5..0000000
--- a/examples/cdi-query/src/main/resources/META-INF/persistence.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-  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.
--->
-<persistence version="2.0"
-             xmlns="http://java.sun.com/xml/ns/persistence"
-             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-             xsi:schemaLocation="
-      http://java.sun.com/xml/ns/persistence
-      http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
-  <persistence-unit name="dynamic" transaction-type="JTA">
-    <jta-data-source>jdbc/dynamicDB</jta-data-source>
-    <class>org.superbiz.dynamic.User</class>
-    <properties>
-      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
-    </properties>
-  </persistence-unit>
-</persistence>
diff --git a/examples/cdi-query/src/test/java/org/superbiz/dynamic/CdiQueryTest.java b/examples/cdi-query/src/test/java/org/superbiz/dynamic/CdiQueryTest.java
deleted file mode 100644
index 6fd554d..0000000
--- a/examples/cdi-query/src/test/java/org/superbiz/dynamic/CdiQueryTest.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * 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.superbiz.dynamic;
-
-import java.util.Collection;
-import java.util.Properties;
-import javax.ejb.Lock;
-import javax.ejb.LockType;
-import javax.ejb.Singleton;
-import javax.ejb.embeddable.EJBContainer;
-import javax.inject.Inject;
-import javax.naming.NamingException;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import static junit.framework.Assert.assertEquals;
-
-/**
- * the UserDao can be injected but doesn't manage transaction so we create
- * a TxProvider bean which provides the tx context.
- *
- * In this sample it simply delegates but in real life it often aggregates multiple calls.
- */
-public class CdiQueryTest {
-    private static EJBContainer container;
-    private static boolean initialized = false;
-
-    @Inject
-    private TxProvider dao;
-
-    @Test
-    public void findAll() {
-        Collection<User> users = dao.findAll();
-        assertEquals(10, users.size());
-    }
-
-    @BeforeClass
-    public static void start() throws Exception {
-        final Properties p = new Properties();
-
-        p.setProperty("jdbc/CdiQueryTest", "new://Resource?type=DataSource");
-        p.setProperty("jdbc/CdiQueryTest.JdbcDriver", "org.hsqldb.jdbcDriver");
-        p.setProperty("jdbc/CdiQueryTest.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
-        p.setProperty("jdbc/CdiQueryTest.UserName", "sa");
-        p.setProperty("jdbc/CdiQueryTest.Password", "");
-
-        container = EJBContainer.createEJBContainer(p);
-    }
-
-    @Before
-    public void injectAndInit() throws NamingException {
-        container.getContext().bind("inject", this);
-        if (!initialized) {
-            for (int i = 0; i < 10; i++) {
-                final User u = new User();
-                u.setAge(i % 4);
-                if (i % 3 == 0) {
-                    u.setName("foo");
-                } else {
-                    u.setName("bar-" + i);
-                }
-                dao.save(u);
-            }
-            initialized = true;
-        }
-    }
-
-    @AfterClass
-    public static void close() {
-        container.close();
-    }
-
-    @Singleton
-    @Lock(LockType.READ)
-    public static class TxProvider { // just here to provide the transactional context
-        @Inject
-        private UserDao dao;
-
-        public Collection<User> findAll() {
-            return dao.findAll();
-        }
-
-        public void save(final User u) {
-            dao.save(u);
-        }
-    }
-}
diff --git a/examples/cdi-realm/pom.xml b/examples/cdi-realm/pom.xml
index 591e5f7..565aaa2 100644
--- a/examples/cdi-realm/pom.xml
+++ b/examples/cdi-realm/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>cdi-realm</artifactId>
   <packaging>war</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: CDI Realm</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -50,7 +50,7 @@
       <plugin>
         <groupId>org.apache.openejb.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>1.0.1-SNAPSHOT</version>
+        <version>1.1.0</version>
       </plugin>
     </plugins>
   </build>
diff --git a/examples/cdi-request-scope/pom.xml b/examples/cdi-request-scope/pom.xml
index d55d08e..3768c72 100644
--- a/examples/cdi-request-scope/pom.xml
+++ b/examples/cdi-request-scope/pom.xml
@@ -14,7 +14,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>cdi-request-scope</artifactId>
   <name>OpenEJB :: Examples :: CDI Request Scope</name>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
 
   <build>
     <defaultGoal>install</defaultGoal>
@@ -53,7 +53,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/cdi-session-scope/pom.xml b/examples/cdi-session-scope/pom.xml
index 5845907..aacc393 100644
--- a/examples/cdi-session-scope/pom.xml
+++ b/examples/cdi-session-scope/pom.xml
@@ -15,7 +15,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>cdi-session-scope</artifactId>
   <name>OpenEJB :: Examples :: CDI Session Scope</name>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <packaging>war</packaging>
 
   <properties>
@@ -45,7 +45,7 @@
       <plugin>
         <groupId>org.apache.openejb.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>1.0.1-SNAPSHOT</version>
+        <version>1.1.0</version>
       </plugin>
     </plugins>
   </build>
diff --git a/examples/change-jaxws-url/pom.xml b/examples/change-jaxws-url/pom.xml
index db84fef..4d7cb34 100644
--- a/examples/change-jaxws-url/pom.xml
+++ b/examples/change-jaxws-url/pom.xml
@@ -21,12 +21,12 @@
   <groupId>org.superbiz</groupId>
   <artifactId>change-jaxws-url</artifactId>
   <packaging>war</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Web Examples :: Change JAXWS URL</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <openejb.version>4.5.1-SNAPSHOT</openejb.version>
-    <tomee.version>1.5.1-SNAPSHOT</tomee.version>
+    <openejb.version>4.5.1</openejb.version>
+    <tomee.version>1.5.1</tomee.version>
   </properties>
   <repositories>
     <repository>
@@ -71,7 +71,7 @@
       <plugin>
         <groupId>org.apache.openejb.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>1.0.1-SNAPSHOT</version>
+        <version>1.1.0</version>
         <configuration>
           <tomeeVersion>${tomee.version}</tomeeVersion>
           <tomeeClassifier>plus</tomeeClassifier>
@@ -80,7 +80,7 @@
       <plugin>
         <groupId>org.apache.openejb.maven</groupId>
         <artifactId>tomee-embedded-maven-plugin</artifactId>
-        <version>1.0.1-SNAPSHOT</version>
+        <version>1.1.0</version>
         <dependencies>
           <dependency>
             <groupId>org.apache.openejb</groupId>
diff --git a/examples/client-resource-lookup-preview/pom.xml b/examples/client-resource-lookup-preview/pom.xml
index 9054351..bc9d517 100644
--- a/examples/client-resource-lookup-preview/pom.xml
+++ b/examples/client-resource-lookup-preview/pom.xml
@@ -21,7 +21,7 @@
     <groupId>org.superbiz</groupId>
     <artifactId>client-resource-lookup-preview</artifactId>
     <packaging>jar</packaging>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.1.0</version>
     <name>OpenEJB :: Examples :: Client Resource Lookup</name>
     <properties>
       <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -59,13 +59,13 @@
       <dependency>
         <groupId>org.apache.openejb</groupId>
         <artifactId>openejb-client</artifactId>
-        <version>4.5.1-SNAPSHOT</version>
+        <version>4.5.1</version>
         <scope>runtime</scope>
       </dependency>
       <dependency>
         <groupId>org.apache.openejb</groupId>
         <artifactId>openejb-ejbd</artifactId>
-        <version>4.5.1-SNAPSHOT</version>
+        <version>4.5.1</version>
       </dependency>
       <dependency>
         <groupId>org.apache.activemq</groupId>
@@ -84,7 +84,7 @@
       <dependency>
         <groupId>org.apache.openejb</groupId>
         <artifactId>ziplock</artifactId>
-        <version>1.5.1-SNAPSHOT</version>
+        <version>1.5.1</version>
         <scope>test</scope>
       </dependency>
     </dependencies>
@@ -103,4 +103,4 @@
       </snapshotRepository>
     </distributionManagement>
 
-  </project>
\ No newline at end of file
+  </project>
diff --git a/examples/component-interfaces/pom.xml b/examples/component-interfaces/pom.xml
index 745c22e..bea8a43 100644
--- a/examples/component-interfaces/pom.xml
+++ b/examples/component-interfaces/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>component-interfaces</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: EJB 2.1 Component Interfaces</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -78,7 +78,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/cucumber-jvm/pom.xml b/examples/cucumber-jvm/pom.xml
index d615bd09..eec7d7d 100644
--- a/examples/cucumber-jvm/pom.xml
+++ b/examples/cucumber-jvm/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>cucumber-jvm</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Cucumber JVM</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -66,7 +66,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <dependency>
diff --git a/examples/custom-injection/pom.xml b/examples/custom-injection/pom.xml
index 6993c3a..1350bb0 100644
--- a/examples/custom-injection/pom.xml
+++ b/examples/custom-injection/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>custom-injection</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Expanded support for Env Entries</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -89,4 +89,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/datasource-ciphered-password/pom.xml b/examples/datasource-ciphered-password/pom.xml
index 3d3ab06..a50be9e 100644
--- a/examples/datasource-ciphered-password/pom.xml
+++ b/examples/datasource-ciphered-password/pom.xml
@@ -20,11 +20,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>datasource-ciphered-password</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Datasource Ciphered Password</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <openejb.version>4.5.1-SNAPSHOT</openejb.version>
+    <openejb.version>4.5.1</openejb.version>
   </properties>
   <build>
     <defaultGoal>install</defaultGoal>
@@ -67,7 +67,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/datasource-definition/pom.xml b/examples/datasource-definition/pom.xml
index fc560b4..080c88d 100644
--- a/examples/datasource-definition/pom.xml
+++ b/examples/datasource-definition/pom.xml
@@ -20,11 +20,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>datasource-definition</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Datasource Definition</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <openejb.version>4.5.1-SNAPSHOT</openejb.version>
+    <openejb.version>4.5.1</openejb.version>
   </properties>
   <build>
     <defaultGoal>install</defaultGoal>
@@ -116,7 +116,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/decorators/pom.xml b/examples/decorators/pom.xml
index 5c0e697..7048363 100644
--- a/examples/decorators/pom.xml
+++ b/examples/decorators/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>decorators</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Decorators</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -71,7 +71,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/deltaspike-configproperty/pom.xml b/examples/deltaspike-configproperty/pom.xml
index ae828ba..7a5771e 100644
--- a/examples/deltaspike-configproperty/pom.xml
+++ b/examples/deltaspike-configproperty/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>deltaspike-configproperty</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: DeltaSpike @ConfigProperty</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -76,13 +76,13 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>arquillian-openejb-embedded-4</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>ziplock</artifactId>
-      <version>1.5.1-SNAPSHOT</version>
+      <version>1.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/deltaspike-exception-handling/pom.xml b/examples/deltaspike-exception-handling/pom.xml
index 63cb290..4acafc0 100644
--- a/examples/deltaspike-exception-handling/pom.xml
+++ b/examples/deltaspike-exception-handling/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>deltaspike-exception-handling</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: DeltaSpike Exception Handling</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -76,13 +76,13 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>arquillian-openejb-embedded-4</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>ziplock</artifactId>
-      <version>1.5.1-SNAPSHOT</version>
+      <version>1.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/deltaspike-i18n/pom.xml b/examples/deltaspike-i18n/pom.xml
index 093b4ba..8fcd02b 100644
--- a/examples/deltaspike-i18n/pom.xml
+++ b/examples/deltaspike-i18n/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>deltaspike-i18n</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: DeltaSpike I18n</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -76,13 +76,13 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>arquillian-openejb-embedded-4</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>ziplock</artifactId>
-      <version>1.5.1-SNAPSHOT</version>
+      <version>1.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/dynamic-dao-implementation/pom.xml b/examples/dynamic-dao-implementation/pom.xml
index 991a1b6..0a621ce 100644
--- a/examples/dynamic-dao-implementation/pom.xml
+++ b/examples/dynamic-dao-implementation/pom.xml
@@ -21,7 +21,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>dynamic-dao-implementation</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Dynamic DAO Implementation</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -68,7 +68,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/dynamic-datasource-routing/pom.xml b/examples/dynamic-datasource-routing/pom.xml
index 64017a2..037785b 100755
--- a/examples/dynamic-datasource-routing/pom.xml
+++ b/examples/dynamic-datasource-routing/pom.xml
@@ -20,11 +20,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>dynamic-datasource-routing</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Dynamic Datasource Routing</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <openejb.version>4.5.1-SNAPSHOT</openejb.version>
+    <openejb.version>4.5.1</openejb.version>
   </properties>
   <build>
     <defaultGoal>install</defaultGoal>
@@ -66,7 +66,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
     </dependency>
   </dependencies>
   <!--
@@ -84,4 +84,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/dynamic-implementation/pom.xml b/examples/dynamic-implementation/pom.xml
index 3d69bbc..ea7400a 100644
--- a/examples/dynamic-implementation/pom.xml
+++ b/examples/dynamic-implementation/pom.xml
@@ -20,7 +20,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>dynamic-implementation</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Dynamic Implementation</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -56,7 +56,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-api</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
@@ -72,7 +72,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/dynamic-proxy-to-access-mbean/pom.xml b/examples/dynamic-proxy-to-access-mbean/pom.xml
index e8569c4..5c932cb 100644
--- a/examples/dynamic-proxy-to-access-mbean/pom.xml
+++ b/examples/dynamic-proxy-to-access-mbean/pom.xml
@@ -20,7 +20,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>dynamic-proxy-to-access-mbean</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Dynamic MBean Proxy</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -64,7 +64,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-api</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
@@ -81,7 +81,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/ear-testing/README.md b/examples/ear-testing/README.md
index 3c5e277..80d6566 100644
--- a/examples/ear-testing/README.md
+++ b/examples/ear-testing/README.md
@@ -33,7 +33,7 @@
       <modelVersion>4.0.0</modelVersion>
       <groupId>org.superbiz</groupId>
       <artifactId>myear</artifactId>
-      <version>1.1-SNAPSHOT</version>
+      <version>1.1.0-SNAPSHOT</version>
 
       <packaging>pom</packaging>
 
@@ -64,7 +64,7 @@
       <parent>
         <groupId>org.superbiz</groupId>
         <artifactId>myear</artifactId>
-        <version>1.1-SNAPSHOT</version>
+        <version>1.1.0-SNAPSHOT</version>
       </parent>
 
       <modelVersion>4.0.0</modelVersion>
@@ -94,7 +94,7 @@
       <parent>
         <groupId>org.superbiz</groupId>
         <artifactId>myear</artifactId>
-        <version>1.1-SNAPSHOT</version>
+        <version>1.1.0-SNAPSHOT</version>
       </parent>
 
       <modelVersion>4.0.0</modelVersion>
diff --git a/examples/ear-testing/business-logic/pom.xml b/examples/ear-testing/business-logic/pom.xml
index 08d18e8..3adaa57 100644
--- a/examples/ear-testing/business-logic/pom.xml
+++ b/examples/ear-testing/business-logic/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.superbiz</groupId>
     <artifactId>myear</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.1.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>business-logic</artifactId>
@@ -77,8 +77,8 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/ear-testing/business-model/pom.xml b/examples/ear-testing/business-model/pom.xml
index 26b974c..03bc8b1 100644
--- a/examples/ear-testing/business-model/pom.xml
+++ b/examples/ear-testing/business-model/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.superbiz</groupId>
     <artifactId>myear</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.1.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>business-model</artifactId>
diff --git a/examples/ear-testing/pom.xml b/examples/ear-testing/pom.xml
index 439353b..27d7e7b 100644
--- a/examples/ear-testing/pom.xml
+++ b/examples/ear-testing/pom.xml
@@ -24,7 +24,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>myear</artifactId>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <packaging>pom</packaging>
   <name>OpenEJB :: Examples :: Ear Testing</name>
   <modules>
diff --git a/examples/ejb-examples/pom.xml b/examples/ejb-examples/pom.xml
index 01df04c..f209bd3 100644
--- a/examples/ejb-examples/pom.xml
+++ b/examples/ejb-examples/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>ejb-examples</artifactId>
   <packaging>war</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Web Examples :: EJB Examples War</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -65,7 +65,7 @@
             <webappArtifact>
               <groupId>org.apache.openejb</groupId>
               <artifactId>openejb-tomcat-webapp</artifactId>
-              <version>4.5.1-SNAPSHOT</version>
+              <version>4.5.1</version>
               <contextPath>openejb</contextPath>
             </webappArtifact>
           </webapps>
@@ -102,4 +102,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/ejb-examples/src/main/webapp/META-INF/context.xml b/examples/ejb-examples/src/main/webapp/META-INF/context.xml
index bfe42c1..a9093bc 100644
--- a/examples/ejb-examples/src/main/webapp/META-INF/context.xml
+++ b/examples/ejb-examples/src/main/webapp/META-INF/context.xml
@@ -22,7 +22,7 @@
 <Context>
   <!-- This only works if the context is installed under the correct name -->
   <Realm className="org.apache.catalina.realm.MemoryRealm"
-         pathname="webapps/ejb-examples-1.0-SNAPSHOT/WEB-INF/tomcat-users.xml"/>
+         pathname="webapps/ejb-examples-1.0/WEB-INF/tomcat-users.xml"/>
 
   <Environment
       name="context.xml/environment"
diff --git a/examples/ejb-webservice/pom.xml b/examples/ejb-webservice/pom.xml
index 58300db..623e4e6 100644
--- a/examples/ejb-webservice/pom.xml
+++ b/examples/ejb-webservice/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>ejb-webservice</artifactId>
   <packaging>war</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Web Examples :: EJB WebService</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,4 +84,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/groovy-cdi/pom.xml b/examples/groovy-cdi/pom.xml
index c8b3e2c..8e0aeec 100644
--- a/examples/groovy-cdi/pom.xml
+++ b/examples/groovy-cdi/pom.xml
@@ -23,7 +23,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>groovy-cdi</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Groovy CDI</name>
 
   <properties>
@@ -84,13 +84,13 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>arquillian-openejb-embedded-4</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>ziplock</artifactId>
-      <version>1.5.1-SNAPSHOT</version>
+      <version>1.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/groovy-jpa/pom.xml b/examples/groovy-jpa/pom.xml
index ac48269..413458f 100644
--- a/examples/groovy-jpa/pom.xml
+++ b/examples/groovy-jpa/pom.xml
@@ -23,7 +23,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>groovy-jpa</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Groovy JPA</name>
 
   <properties>
@@ -86,13 +86,13 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>arquillian-openejb-embedded-4</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>ziplock</artifactId>
-      <version>1.5.1-SNAPSHOT</version>
+      <version>1.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/groovy-spock/pom.xml b/examples/groovy-spock/pom.xml
index 9fda31b..e81ed6c 100644
--- a/examples/groovy-spock/pom.xml
+++ b/examples/groovy-spock/pom.xml
@@ -23,7 +23,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>groovy-spock</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Groovy Spock</name>
 
   <properties>
@@ -94,13 +94,13 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>arquillian-openejb-embedded-4</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>ziplock</artifactId>
-      <version>1.5.1-SNAPSHOT</version>
+      <version>1.5.1</version>
       <scope>test</scope>
     </dependency>
     <dependency>
diff --git a/examples/helloworld-weblogic/pom.xml b/examples/helloworld-weblogic/pom.xml
index fc5ce01..88879de 100644
--- a/examples/helloworld-weblogic/pom.xml
+++ b/examples/helloworld-weblogic/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>helloworld-weblogic</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Hello World - Weblogic</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -71,7 +71,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/injection-of-connectionfactory/pom.xml b/examples/injection-of-connectionfactory/pom.xml
index 690ac4e..6d433dd 100644
--- a/examples/injection-of-connectionfactory/pom.xml
+++ b/examples/injection-of-connectionfactory/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>injection-of-connectionfactory</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: @Resource javax.jms.ConnectionFactory</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -71,7 +71,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
 
diff --git a/examples/injection-of-datasource/pom.xml b/examples/injection-of-datasource/pom.xml
index 226449d..c0690f5 100644
--- a/examples/injection-of-datasource/pom.xml
+++ b/examples/injection-of-datasource/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>injection-of-datasource</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: @Resource DataSource Injection</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -71,7 +71,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
 
diff --git a/examples/injection-of-ejbs/pom.xml b/examples/injection-of-ejbs/pom.xml
index f03fb7d..bf377e4 100644
--- a/examples/injection-of-ejbs/pom.xml
+++ b/examples/injection-of-ejbs/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>injection-of-ejbs</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: @EJB Injection</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -89,4 +89,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/injection-of-entitymanager/pom.xml b/examples/injection-of-entitymanager/pom.xml
index 78bd719..3646fed 100644
--- a/examples/injection-of-entitymanager/pom.xml
+++ b/examples/injection-of-entitymanager/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>injection-of-entitymanager</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: @PersistenceContext EntityManager Injection</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -89,4 +89,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/injection-of-env-entry/pom.xml b/examples/injection-of-env-entry/pom.xml
index faa2bf7..b037bce 100644
--- a/examples/injection-of-env-entry/pom.xml
+++ b/examples/injection-of-env-entry/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>injection-of-env-entry</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: @Resource env-entry Injection</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/interceptors/pom.xml b/examples/interceptors/pom.xml
index 2197b94..05bcc0e 100644
--- a/examples/interceptors/pom.xml
+++ b/examples/interceptors/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>interceptors</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Interceptors</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/jpa-eclipselink/pom.xml b/examples/jpa-eclipselink/pom.xml
index 749695c..3fb2f69 100644
--- a/examples/jpa-eclipselink/pom.xml
+++ b/examples/jpa-eclipselink/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>jpa-eclipselink</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: JPA with EclipseLink</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -73,7 +73,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <!-- toplink dependencies -->
@@ -99,4 +99,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/jpa-enumerated/pom.xml b/examples/jpa-enumerated/pom.xml
index ec7533e..dd8b10b 100644
--- a/examples/jpa-enumerated/pom.xml
+++ b/examples/jpa-enumerated/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>jpa-enumerated</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: JPA @Enumerated</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/jpa-hibernate/pom.xml b/examples/jpa-hibernate/pom.xml
index 4cf5592..0ea4883 100644
--- a/examples/jpa-hibernate/pom.xml
+++ b/examples/jpa-hibernate/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>jpa-hibernate</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: JPA with Hibernate</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -81,7 +81,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core-hibernate</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <type>pom</type>
       <scope>test</scope>
     </dependency>
@@ -101,4 +101,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/jsf-cdi-and-ejb/pom.xml b/examples/jsf-cdi-and-ejb/pom.xml
index e8185ad..9c948cc 100644
--- a/examples/jsf-cdi-and-ejb/pom.xml
+++ b/examples/jsf-cdi-and-ejb/pom.xml
@@ -23,7 +23,7 @@
   <artifactId>jsf-cdi-and-ejb</artifactId>
   <packaging>war</packaging>
   <name>OpenEJB :: Web Examples :: JSF - CDI and EJB</name>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <url>http://openejb.apache.org</url>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -129,4 +129,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/jsf-managedBean-and-ejb/pom.xml b/examples/jsf-managedBean-and-ejb/pom.xml
index f66bf89..6a9d22b 100644
--- a/examples/jsf-managedBean-and-ejb/pom.xml
+++ b/examples/jsf-managedBean-and-ejb/pom.xml
@@ -23,7 +23,7 @@
   <artifactId>jsf-managedBean-and-ejb</artifactId>
   <packaging>war</packaging>
   <name>OpenEJB :: Web Examples :: JSF - ManangedBean and EJB</name>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <url>http://openejb.apache.org</url>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -43,7 +43,7 @@
       <plugin>
         <groupId>org.apache.openejb.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>1.0.1-SNAPSHOT</version>
+        <version>1.1.0</version>
       </plugin>
     </plugins>
   </build>
diff --git a/examples/lookup-of-ejbs-with-descriptor/pom.xml b/examples/lookup-of-ejbs-with-descriptor/pom.xml
index 6b97dd3..00fcb16 100644
--- a/examples/lookup-of-ejbs-with-descriptor/pom.xml
+++ b/examples/lookup-of-ejbs-with-descriptor/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>lookup-of-ejbs-with-descriptor</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: EJB Lookup with descriptor</name>
   <properties>
     <!--
@@ -74,7 +74,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/lookup-of-ejbs/pom.xml b/examples/lookup-of-ejbs/pom.xml
index ed55f39..b7b83e1 100644
--- a/examples/lookup-of-ejbs/pom.xml
+++ b/examples/lookup-of-ejbs/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>lookup-of-ejbs</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: @EJB Lookup</name>
   <properties>
     <!--
@@ -74,7 +74,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/mbean-auto-registration/pom.xml b/examples/mbean-auto-registration/pom.xml
index af71361..d566c24 100755
--- a/examples/mbean-auto-registration/pom.xml
+++ b/examples/mbean-auto-registration/pom.xml
@@ -20,11 +20,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>mbean-auto-registration</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: MBean Auto Registration</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <openejb.version>4.5.1-SNAPSHOT</openejb.version>
+    <openejb.version>4.5.1</openejb.version>
   </properties>
   <build>
     <defaultGoal>install</defaultGoal>
@@ -57,7 +57,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>mbean-annotation-api</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
@@ -72,7 +72,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/moviefun-old/README.md b/examples/moviefun-old/README.md
deleted file mode 100644
index 2bcb5f6..0000000
--- a/examples/moviefun-old/README.md
+++ /dev/null
@@ -1,1216 +0,0 @@
-Title: Moviefun
-
-*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
-
-    /**
-     * 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.superbiz.moviefun;
-    
-    import javax.ejb.EJB;
-    import javax.servlet.ServletException;
-    import javax.servlet.http.HttpServlet;
-    import javax.servlet.http.HttpServletRequest;
-    import javax.servlet.http.HttpServletResponse;
-    import javax.servlet.http.HttpSession;
-    import java.io.IOException;
-    import java.util.ArrayList;
-    import java.util.List;
-    import java.util.ListIterator;
-    
-    /**
-     * @version $Revision$ $Date$
-     */
-    public class ActionServlet extends HttpServlet {
-    
-        @EJB(name = "movies")
-        private Movies moviesBean;
-    
-    	@Override
-    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-    		process(request, response);
-    	}
-    
-    	@Override
-    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-    		process(request, response);
-    	}
-    
-    	private void process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-    		HttpSession session = request.getSession();
-    		
-    	    List<Movie> movies = null;
-    	    ListIterator<Movie> listIterator = null;
-    	    int display = 5;
-    	    
-    	    String action = request.getParameter("action");
-    
-    	    
-    		if ("Add".equals(action)) {
-    
-    	        String title = request.getParameter("title");
-    	        String director = request.getParameter("director");
-    	        String genre = request.getParameter("genre");
-    	        int rating = Integer.parseInt(request.getParameter("rating"));
-    	        int year = Integer.parseInt(request.getParameter("year"));
-    
-    	        Movie movie = new Movie(title, director, genre, rating, year);
-    
-    	        moviesBean.addMovie(movie);
-    
-    	    } else if ("Remove".equals(action)) {
-    
-    	        String[] ids = request.getParameterValues("id");
-    	        for (String id : ids) {
-    	            moviesBean.deleteMovieId(new Long(id));
-    	        }
-    
-    	    } else if (">>".equals(action)) {
-    
-    	        movies = (List) session.getAttribute("movies.collection");
-    	        listIterator = (ListIterator) session.getAttribute("movies.iterator");
-    
-    	    } else if ("<<".equals(action)) {
-    
-    	        movies = (List) session.getAttribute("movies.collection");
-    	        listIterator = (ListIterator) session.getAttribute("movies.iterator");
-    	        for (int i = display * 2; i > 0 && listIterator.hasPrevious(); i--) {
-    	            listIterator.previous(); // backup
-    	        }
-    
-    	    } else if ("findByTitle".equals(action)) {
-    
-    	        movies = moviesBean.findByTitle(request.getParameter("key"));
-    
-    	    } else if ("findByDirector".equals(action)) {
-    
-    	        movies = moviesBean.findByDirector(request.getParameter("key"));
-    
-    	    } else if ("findByGenre".equals(action)) {
-    
-    	        movies = moviesBean.findByGenre(request.getParameter("key"));
-    	    }
-    
-    	    if (movies == null) {
-    	        try {
-    	            movies = moviesBean.getMovies();
-    	        } catch (Throwable e) {
-    	            // We must not have run setup yet
-    	            response.sendRedirect("setup.jsp");
-    	            return;
-    	        }
-    	    }
-    
-    	    if (listIterator == null) {
-    	        listIterator = movies.listIterator();
-    	    }
-    
-    	    session.setAttribute("movies.collection", movies);
-    	    session.setAttribute("movies.iterator", listIterator);
-    	    
-    	    List<Movie> moviesToShow = new ArrayList<Movie>();
-    	    
-    	    boolean hasPrevious = listIterator.hasPrevious();
-    	    
-    	    int start = listIterator.nextIndex();
-            
-    	    for (int i=display; i > 0 && listIterator.hasNext(); i-- ) {
-    	    	    Movie movie = (Movie) listIterator.next();
-    	    	    moviesToShow.add(movie);
-    	    }
-            
-    	    boolean hasNext = listIterator.hasNext();
-    			
-    	    int end = listIterator.nextIndex();
-    	    request.setAttribute("movies", moviesToShow);
-    	    request.setAttribute("start", start);
-    	    request.setAttribute("end", end);
-    	    request.setAttribute("total", movies.size());
-    	    request.setAttribute("display", display);
-    	    request.setAttribute("hasNext", hasNext);
-    	    request.setAttribute("hasPrev", hasPrevious);
-    		
-    	    request.getRequestDispatcher("WEB-INF/moviefun.jsp").forward(request, response);
-    	}
-    
-    }
-    /**
-     * 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.superbiz.moviefun;
-    
-    import org.superbiz.moviefun.util.JsfUtil;
-    import org.superbiz.moviefun.util.PaginationHelper;
-    
-    import javax.ejb.EJB;
-    import javax.faces.bean.ManagedBean;
-    import javax.faces.bean.SessionScoped;
-    import javax.faces.component.UIComponent;
-    import javax.faces.context.FacesContext;
-    import javax.faces.convert.Converter;
-    import javax.faces.convert.FacesConverter;
-    import javax.faces.model.DataModel;
-    import javax.faces.model.ListDataModel;
-    import javax.faces.model.SelectItem;
-    import java.io.Serializable;
-    import java.util.ResourceBundle;
-    
-    @ManagedBean(name = "movieController")
-    @SessionScoped
-    public class MovieController implements Serializable {
-    
-    
-        private Movie current;
-        private DataModel items = null;
-        @EJB
-        private MoviesImpl ejbFacade;
-        private PaginationHelper pagination;
-        private int selectedItemIndex;
-    
-        public MovieController() {
-        }
-    
-        public Movie getSelected() {
-            if (current == null) {
-                current = new Movie();
-                selectedItemIndex = -1;
-            }
-            return current;
-        }
-    
-        private MoviesImpl getFacade() {
-            return ejbFacade;
-        }
-    
-        public PaginationHelper getPagination() {
-            if (pagination == null) {
-                pagination = new PaginationHelper(10) {
-    
-                    @Override
-                    public int getItemsCount() {
-                        return getFacade().count();
-                    }
-    
-                    @Override
-                    public DataModel createPageDataModel() {
-                        return new ListDataModel(getFacade().findRange(new int[]{getPageFirstItem(), getPageFirstItem() + getPageSize()}));
-                    }
-                };
-            }
-            return pagination;
-        }
-    
-        public String prepareList() {
-            recreateModel();
-            return "List";
-        }
-    
-        public String prepareView() {
-            current = (Movie) getItems().getRowData();
-            selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
-            return "View";
-        }
-    
-        public String prepareCreate() {
-            current = new Movie();
-            selectedItemIndex = -1;
-            return "Create";
-        }
-    
-        public String create() {
-            try {
-                getFacade().addMovie(current);
-                JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("MovieCreated"));
-                return prepareCreate();
-            } catch (Exception e) {
-                JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
-                return null;
-            }
-        }
-    
-        public String prepareEdit() {
-            current = (Movie) getItems().getRowData();
-            selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
-            return "Edit";
-        }
-    
-        public String update() {
-            try {
-                getFacade().editMovie(current);
-                JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("MovieUpdated"));
-                return "View";
-            } catch (Exception e) {
-                JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
-                return null;
-            }
-        }
-    
-        public String destroy() {
-            current = (Movie) getItems().getRowData();
-            selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
-            performDestroy();
-            recreateModel();
-            return "List";
-        }
-    
-        public String destroyAndView() {
-            performDestroy();
-            recreateModel();
-            updateCurrentItem();
-            if (selectedItemIndex >= 0) {
-                return "View";
-            } else {
-                // all items were removed - go back to list
-                recreateModel();
-                return "List";
-            }
-        }
-    
-        private void performDestroy() {
-            try {
-                getFacade().deleteMovieId(current.getId());
-                JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("MovieDeleted"));
-            } catch (Exception e) {
-                JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
-            }
-        }
-    
-        private void updateCurrentItem() {
-            int count = getFacade().count();
-            if (selectedItemIndex >= count) {
-                // selected index cannot be bigger than number of items:
-                selectedItemIndex = count - 1;
-                // go to previous page if last page disappeared:
-                if (pagination.getPageFirstItem() >= count) {
-                    pagination.previousPage();
-                }
-            }
-            if (selectedItemIndex >= 0) {
-                current = getFacade().findRange(new int[]{selectedItemIndex, selectedItemIndex + 1}).get(0);
-            }
-        }
-    
-        public DataModel getItems() {
-            if (items == null) {
-                items = getPagination().createPageDataModel();
-            }
-            return items;
-        }
-    
-        private void recreateModel() {
-            items = null;
-        }
-    
-        public String next() {
-            getPagination().nextPage();
-            recreateModel();
-            return "List";
-        }
-    
-        public String previous() {
-            getPagination().previousPage();
-            recreateModel();
-            return "List";
-        }
-    
-        public SelectItem[] getItemsAvailableSelectMany() {
-            return JsfUtil.getSelectItems(ejbFacade.getMovies(), false);
-        }
-    
-        public SelectItem[] getItemsAvailableSelectOne() {
-            return JsfUtil.getSelectItems(ejbFacade.getMovies(), true);
-        }
-    
-        @FacesConverter(forClass = Movie.class)
-        public static class MovieControllerConverter implements Converter {
-    
-            public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
-                if (value == null || value.length() == 0) {
-                    return null;
-                }
-                MovieController controller = (MovieController) facesContext.getApplication().getELResolver().
-                        getValue(facesContext.getELContext(), null, "movieController");
-                return controller.ejbFacade.find(getKey(value));
-            }
-    
-            long getKey(String value) {
-                long key;
-                key = Long.parseLong(value);
-                return key;
-            }
-    
-            String getStringKey(long value) {
-                StringBuffer sb = new StringBuffer();
-                sb.append(value);
-                return sb.toString();
-            }
-    
-            public String getAsString(FacesContext facesContext, UIComponent component, Object object) {
-                if (object == null) {
-                    return null;
-                }
-                if (object instanceof Movie) {
-                    Movie o = (Movie) object;
-                    return getStringKey(o.getId());
-                } else {
-                    throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: " + MovieController.class.getName());
-                }
-            }
-    
-        }
-    
-    }
-    /**
-     * 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.superbiz.moviefun;
-    
-    import javax.ejb.EJB;
-    import javax.ejb.LocalBean;
-    import javax.ejb.Stateless;
-    import javax.jws.WebService;
-    import javax.persistence.EntityManager;
-    import javax.persistence.PersistenceContext;
-    import javax.persistence.TypedQuery;
-    import javax.persistence.criteria.CriteriaBuilder;
-    import javax.persistence.criteria.CriteriaQuery;
-    import javax.persistence.criteria.Path;
-    import javax.persistence.criteria.Predicate;
-    import javax.persistence.criteria.Root;
-    import javax.persistence.metamodel.EntityType;
-    import java.util.List;
-    
-    @LocalBean
-    @Stateless(name = "Movies")
-    @WebService(portName = "MoviesPort",
-            serviceName = "MoviesWebService",
-            targetNamespace = "http://superbiz.org/wsdl")
-    public class MoviesImpl implements Movies, MoviesRemote {
-    
-        @EJB
-        private Notifier notifier;
-    
-        @PersistenceContext(unitName = "movie-unit")
-        private EntityManager entityManager;
-    
-        @Override
-        public Movie find(Long id) {
-            return entityManager.find(Movie.class, id);
-        }
-    
-        @Override
-        public void addMovie(Movie movie) {
-            entityManager.persist(movie);
-        }
-    
-        @Override
-        public void editMovie(Movie movie) {
-            entityManager.merge(movie);
-        }
-    
-        @Override
-        public void deleteMovie(Movie movie) {
-            entityManager.remove(movie);
-            notifier.notify("Deleted Movie \"" + movie.getTitle() + "\" (" + movie.getYear() + ")");
-        }
-    
-        @Override
-        public void deleteMovieId(long id) {
-            Movie movie = entityManager.find(Movie.class, id);
-            deleteMovie(movie);
-        }
-    
-        @Override
-        public List<Movie> getMovies() {
-            CriteriaQuery<Movie> cq = entityManager.getCriteriaBuilder().createQuery(Movie.class);
-            cq.select(cq.from(Movie.class));
-            return entityManager.createQuery(cq).getResultList();
-        }
-    
-        @Override
-        public List<Movie> findByTitle(String title) {
-            return findByStringField("title", title);
-        }
-    
-        @Override
-        public List<Movie> findByGenre(String genre) {
-            return findByStringField("genre", genre);
-        }
-    
-        @Override
-        public List<Movie> findByDirector(String director) {
-            return findByStringField("director", director);
-        }
-    
-        private List<Movie> findByStringField(String fieldname, String param) {
-            CriteriaBuilder builder = entityManager.getCriteriaBuilder();
-            CriteriaQuery<Movie> query = builder.createQuery(Movie.class);
-            Root<Movie> root = query.from(Movie.class);
-            EntityType<Movie> type = entityManager.getMetamodel().entity(Movie.class);
-    
-            Path<String> path = root.get(type.getDeclaredSingularAttribute(fieldname, String.class));
-            Predicate condition = builder.like(path, "%" + param + "%");
-    
-            query.where(condition);
-    
-            return entityManager.createQuery(query).getResultList();
-        }
-    
-        @Override
-        public List<Movie> findRange(int[] range) {
-            CriteriaQuery<Movie> cq = entityManager.getCriteriaBuilder().createQuery(Movie.class);
-            cq.select(cq.from(Movie.class));
-            TypedQuery<Movie> q = entityManager.createQuery(cq);
-            q.setMaxResults(range[1] - range[0]);
-            q.setFirstResult(range[0]);
-            return q.getResultList();
-        }
-    
-        @Override
-        public int count() {
-            CriteriaQuery<Long> cq = entityManager.getCriteriaBuilder().createQuery(Long.class);
-            Root<Movie> rt = cq.from(Movie.class);
-            cq.select(entityManager.getCriteriaBuilder().count(rt));
-            TypedQuery<Long> q = entityManager.createQuery(cq);
-            return (q.getSingleResult()).intValue();
-        }
-    
-    }/**
-     * 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.superbiz.moviefun;
-    
-    /**
-     * @version $Revision$ $Date$
-     */
-    public interface Notifier {
-        void notify(String message);
-    }
-    /**
-     * 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.superbiz.moviefun;
-    
-    import javax.annotation.Resource;
-    import javax.ejb.Stateless;
-    import javax.jms.Connection;
-    import javax.jms.ConnectionFactory;
-    import javax.jms.DeliveryMode;
-    import javax.jms.JMSException;
-    import javax.jms.MessageProducer;
-    import javax.jms.Session;
-    import javax.jms.TextMessage;
-    import javax.jms.Topic;
-    
-    @Stateless
-    public class NotifierImpl implements Notifier {
-    
-        @Resource
-        private ConnectionFactory connectionFactory;
-    
-        @Resource(name = "notifications")
-        private Topic notificationsTopic;
-    
-        public void notify(String message) {
-            try {
-                Connection connection = null;
-                Session session = null;
-    
-                try {
-                    connection = connectionFactory.createConnection();
-                    connection.start();
-    
-                    // Create a Session
-                    session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-    
-                    // Create a MessageProducer from the Session to the Topic or Queue
-                    MessageProducer producer = session.createProducer(notificationsTopic);
-                    producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
-    
-                    // Create a message
-                    TextMessage textMessage = session.createTextMessage(message);
-    
-                    // Tell the producer to send the message
-                    producer.send(textMessage);
-                } finally {
-                    // Clean up
-                    if (session != null) session.close();
-                    if (connection != null) connection.close();
-                }
-            } catch (JMSException e) {
-                throw new IllegalStateException(e);
-            }
-    
-        }
-    
-    }
-    /**
-     * 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.superbiz.moviefun.util;
-    
-    import javax.faces.application.FacesMessage;
-    import javax.faces.component.UIComponent;
-    import javax.faces.context.FacesContext;
-    import javax.faces.convert.Converter;
-    import javax.faces.model.SelectItem;
-    import java.util.List;
-    
-    public class JsfUtil {
-    
-        public static SelectItem[] getSelectItems(List<?> entities, boolean selectOne) {
-            int size = selectOne ? entities.size() + 1 : entities.size();
-            SelectItem[] items = new SelectItem[size];
-            int i = 0;
-            if (selectOne) {
-                items[0] = new SelectItem("", "---");
-                i++;
-            }
-            for (Object x : entities) {
-                items[i++] = new SelectItem(x, x.toString());
-            }
-            return items;
-        }
-    
-        public static void addErrorMessage(Exception ex, String defaultMsg) {
-            String msg = ex.getLocalizedMessage();
-            if (msg != null && msg.length() > 0) {
-                addErrorMessage(msg);
-            } else {
-                addErrorMessage(defaultMsg);
-            }
-        }
-    
-        public static void addErrorMessages(List<String> messages) {
-            for (String message : messages) {
-                addErrorMessage(message);
-            }
-        }
-    
-        public static void addErrorMessage(String msg) {
-            FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, msg);
-            FacesContext.getCurrentInstance().addMessage(null, facesMsg);
-        }
-    
-        public static void addSuccessMessage(String msg) {
-            FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, msg);
-            FacesContext.getCurrentInstance().addMessage("successInfo", facesMsg);
-        }
-    
-        public static String getRequestParameter(String key) {
-            return FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(key);
-        }
-    
-        public static Object getObjectFromRequestParameter(String requestParameterName, Converter converter, UIComponent component) {
-            String theId = JsfUtil.getRequestParameter(requestParameterName);
-            return converter.getAsObject(FacesContext.getCurrentInstance(), component, theId);
-        }
-    
-    }/**
-     * 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.superbiz.moviefun.util;
-    
-    import javax.faces.model.DataModel;
-    
-    public abstract class PaginationHelper {
-    
-        private int pageSize;
-        private int page;
-    
-        public PaginationHelper(int pageSize) {
-            this.pageSize = pageSize;
-        }
-    
-        public abstract int getItemsCount();
-    
-        public abstract DataModel createPageDataModel();
-    
-        public int getPageFirstItem() {
-            return page * pageSize;
-        }
-    
-        public int getPageLastItem() {
-            int i = getPageFirstItem() + pageSize - 1;
-            int count = getItemsCount() - 1;
-            if (i > count) {
-                i = count;
-            }
-            if (i < 0) {
-                i = 0;
-            }
-            return i;
-        }
-    
-        public boolean isHasNextPage() {
-            return (page + 1) * pageSize + 1 <= getItemsCount();
-        }
-    
-        public void nextPage() {
-            if (isHasNextPage()) {
-                page++;
-            }
-        }
-    
-        public boolean isHasPreviousPage() {
-            return page > 0;
-        }
-    
-        public void previousPage() {
-            if (isHasPreviousPage()) {
-                page--;
-            }
-        }
-    
-        public int getPageSize() {
-            return pageSize;
-        }
-    
-    }
-    /**
-     * 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.superbiz.moviefun;
-    
-    import com.gargoylesoftware.htmlunit.WebClient;
-    import com.gargoylesoftware.htmlunit.html.DomNodeList;
-    import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
-    import com.gargoylesoftware.htmlunit.html.HtmlElement;
-    import com.gargoylesoftware.htmlunit.html.HtmlPage;
-    import org.junit.Test;
-    
-    import java.util.Iterator;
-    
-    import static org.junit.Assert.assertTrue;
-    
-    public class MoviesIT {
-    
-        @Test
-        public void testShouldMakeSureWebappIsWorking() throws Exception {
-            WebClient webClient = new WebClient();
-            HtmlPage page = webClient.getPage("http://localhost:9999/moviefun/setup.jsp");
-    
-            assertMoviesPresent(page);
-    
-            page = webClient.getPage("http://localhost:9999/moviefun/faces/movie/List.xhtml");
-    
-            assertMoviesPresent(page);
-            webClient.closeAllWindows();
-        }
-    
-        private void assertMoviesPresent(HtmlPage page) {
-            String pageAsText = page.asText();
-            assertTrue(pageAsText.contains("Wedding Crashers"));
-            assertTrue(pageAsText.contains("Starsky & Hutch"));
-            assertTrue(pageAsText.contains("Shanghai Knights"));
-            assertTrue(pageAsText.contains("I-Spy"));
-            assertTrue(pageAsText.contains("The Royal Tenenbaums"));
-            assertTrue(pageAsText.contains("Zoolander"));
-            assertTrue(pageAsText.contains("Shanghai Noon"));
-        }
-    
-        private void clickOnLink(HtmlPage page, String lookFor) throws Exception {
-            DomNodeList<HtmlElement> links = page.getElementsByTagName("a");
-            Iterator<HtmlElement> iterator = links.iterator();
-            while (iterator.hasNext()) {
-                HtmlAnchor anchor = (HtmlAnchor) iterator.next();
-    
-                if (lookFor.equals(anchor.getTextContent())) {
-                    anchor.click();
-                    break;
-                }
-            }
-        }
-    
-    }
-    /**
-     * 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.superbiz.moviefun;
-    
-    import junit.framework.TestCase;
-    import org.apache.openejb.api.LocalClient;
-    
-    import javax.annotation.Resource;
-    import javax.ejb.EJB;
-    import javax.naming.Context;
-    import javax.naming.InitialContext;
-    import javax.persistence.EntityManager;
-    import javax.persistence.PersistenceContext;
-    import javax.transaction.UserTransaction;
-    import java.util.List;
-    import java.util.Properties;
-    
-    @LocalClient
-    public class MoviesTest extends TestCase {
-    
-        @EJB
-        private Movies movies;
-    
-        @Resource
-        private UserTransaction userTransaction;
-    
-        @PersistenceContext
-        private EntityManager entityManager;
-    
-        public void setUp() throws Exception {
-            Properties p = new Properties();
-            p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
-            p.put("movieDatabase", "new://Resource?type=DataSource");
-            p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
-            p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
-    
-            InitialContext initialContext = new InitialContext(p);
-    
-            // Here's the fun part
-            initialContext.bind("inject", this);
-        }
-    
-        public void test() throws Exception {
-    
-            userTransaction.begin();
-    
-            try {
-                entityManager.persist(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
-                entityManager.persist(new Movie("Joel Coen", "Fargo", 1996));
-                entityManager.persist(new Movie("Joel Coen", "The Big Lebowski", 1998));
-    
-                List<Movie> list = movies.getMovies();
-                assertEquals("List.size()", 3, list.size());
-    
-                for (Movie movie : list) {
-                    movies.deleteMovie(movie);
-                }
-    
-                assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
-    
-            } finally {
-                userTransaction.commit();
-            }
-        }
-    }/**
-     * 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.superbiz.moviefun;
-    
-    import javax.persistence.Entity;
-    import javax.persistence.GeneratedValue;
-    import javax.persistence.GenerationType;
-    import javax.persistence.Id;
-    import java.io.Serializable;
-    
-    @Entity
-    public class Movie implements Serializable {
-    
-        private static final long serialVersionUID = 1L;
-    
-        @Id
-        @GeneratedValue(strategy = GenerationType.AUTO)
-        private long id;
-    
-        private String director;
-        private String title;
-        private int year;
-        private String genre;
-        private int rating;
-    
-    
-        public Movie() {
-        }
-    
-        public Movie(String title, String director, String genre, int rating, int year) {
-            this.director = director;
-            this.title = title;
-            this.year = year;
-            this.genre = genre;
-            this.rating = rating;
-        }
-    
-        public Movie(String director, String title, int year) {
-            this.director = director;
-            this.title = title;
-            this.year = year;
-        }
-    
-        public long getId() {
-            return id;
-        }
-    
-        public void setId(long id) {
-            this.id = id;
-        }
-    
-        public String getDirector() {
-            return director;
-        }
-    
-        public void setDirector(String director) {
-            this.director = director;
-        }
-    
-        public String getTitle() {
-            return title;
-        }
-    
-        public void setTitle(String title) {
-            this.title = title;
-        }
-    
-        public int getYear() {
-            return year;
-        }
-    
-        public void setYear(int year) {
-            this.year = year;
-        }
-    
-        public String getGenre() {
-            return genre;
-        }
-    
-        public void setGenre(String genre) {
-            this.genre = genre;
-        }
-    
-        public int getRating() {
-            return rating;
-        }
-    
-        public void setRating(int rating) {
-            this.rating = rating;
-        }
-    }/**
-     * 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.superbiz.moviefun;
-    
-    import javax.ejb.Local;
-    import java.util.List;
-    
-    @Local
-    public interface Movies {
-        public int count();
-    
-        public List<Movie> findRange(int[] range);
-    
-        public List<Movie> findByDirector(String director);
-    
-        public List<Movie> findByGenre(String genre);
-    
-        public List<Movie> findByTitle(String title);
-    
-        public List<Movie> getMovies();
-    
-        public void deleteMovieId(long id);
-    
-        public void deleteMovie(Movie movie);
-    
-        public void editMovie(Movie movie);
-    
-        public void addMovie(Movie movie);
-    
-        public Movie find(Long id);
-    }
-    /**
-     * 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.superbiz.moviefun;
-    
-    import javax.ejb.Remote;
-    import java.util.List;
-    
-    @Remote
-    public interface MoviesRemote {
-        public int count();
-    
-        public List<Movie> findRange(int[] range);
-    
-        public List<Movie> findByDirector(String director);
-    
-        public List<Movie> findByGenre(String genre);
-    
-        public List<Movie> findByTitle(String title);
-    
-        public List<Movie> getMovies();
-    
-        public void deleteMovieId(long id);
-    
-        public void deleteMovie(Movie movie);
-    
-        public void editMovie(Movie movie);
-    
-        public void addMovie(Movie movie);
-    
-        public Movie find(Long id);
-    }
-    /*
-     * 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.superbiz.moviefun;
-    
-    import javax.naming.InitialContext;
-    import javax.naming.NamingException;
-    import java.awt.*;
-    import java.awt.event.ActionEvent;
-    import java.awt.event.ActionListener;
-    import java.net.MalformedURLException;
-    import java.net.URL;
-    
-    public class NotificationMonitor {
-        private static TrayIcon trayIcon;
-    
-        public static void main(String[] args) throws NamingException, InterruptedException, AWTException, MalformedURLException {
-            addSystemTrayIcon();
-    
-            // Boot the embedded EJB Container 
-            new InitialContext();
-    
-            System.out.println("Starting monitor...");
-        }
-    
-        private static void addSystemTrayIcon() throws AWTException, MalformedURLException {
-            SystemTray tray = SystemTray.getSystemTray();
-    
-            URL moviepng = NotificationMonitor.class.getClassLoader().getResource("movie.png");
-            Image image = Toolkit.getDefaultToolkit().getImage(moviepng);
-    
-            ActionListener exitListener = new ActionListener() {
-                public void actionPerformed(ActionEvent e) {
-                    System.out.println("Exiting monitor...");
-                    System.exit(0);
-                }
-            };
-    
-            PopupMenu popup = new PopupMenu();
-            MenuItem defaultItem = new MenuItem("Exit");
-            defaultItem.addActionListener(exitListener);
-            popup.add(defaultItem);
-    
-            trayIcon = new TrayIcon(image, "Notification Monitor", popup);
-            trayIcon.setImageAutoSize(true);
-            tray.add(trayIcon);
-    
-    
-        }
-    
-        public static void showAlert(String message) {
-            synchronized (trayIcon) {
-                trayIcon.displayMessage("Alert received", message, TrayIcon.MessageType.WARNING);
-            }
-        }
-    }/*
-     * 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.superbiz.moviefun;
-    
-    import javax.ejb.ActivationConfigProperty;
-    import javax.ejb.MessageDriven;
-    import javax.jms.JMSException;
-    import javax.jms.Message;
-    import javax.jms.MessageListener;
-    import javax.jms.TextMessage;
-    
-    @MessageDriven(activationConfig = {
-            @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
-            @ActivationConfigProperty(propertyName = "destination", propertyValue = "notifications")})
-    public class NotificationsBean implements MessageListener {
-    
-        public void onMessage(Message message) {
-            try {
-                TextMessage textMessage = (TextMessage) message;
-                String text = textMessage.getText();
-    
-                System.out.println("");
-                System.out.println("====================================");
-                System.out.println("Notification received: " + text);
-                System.out.println("====================================");
-                System.out.println("");
-    
-                NotificationMonitor.showAlert(text);
-            } catch (JMSException e) {
-                e.printStackTrace();
-            }
-        }
-    }
\ No newline at end of file
diff --git a/examples/moviefun-old/app/delete-movie.pl b/examples/moviefun-old/app/delete-movie.pl
deleted file mode 100644
index 22fe3a7..0000000
--- a/examples/moviefun-old/app/delete-movie.pl
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/env perl -w
-#============================================================
-# 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.
-#============================================================
-
-#use SOAP::Lite 'trace', 'debug';
-use SOAP::Lite;
-
-my $ID = $ARGV[0];
-print $ID;
-my $namespace = 'http://superbiz.org/wsdl';
-
-my $service = SOAP::Lite-> uri($namespace) 
-    ->proxy('http://localhost:8080/Movies') 
-    ->on_action (sub { return '' } ); 
-
-my $method = SOAP::Data->name("ns1:deleteMovieId") 
-    ->attr({'xmlns:ns1' => $namespace}); 
-
-my @params = (SOAP::Data->name('arg0'=> $ID)->type('long'));
-
-
-my $response =  $service->call($method=>@params);
-
diff --git a/examples/moviefun-old/app/get-movies.pl b/examples/moviefun-old/app/get-movies.pl
deleted file mode 100644
index 6911467..0000000
--- a/examples/moviefun-old/app/get-movies.pl
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/env perl
-#============================================================
-# 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.
-#============================================================
-
-#use SOAP::Lite 'trace', 'debug';
-use SOAP::Lite;
-
-my $namespace = 'http://superbiz.org/wsdl';
-
-my $service = SOAP::Lite-> uri($namespace) 
-    ->proxy('http://localhost:8080/Movies') 
-    ->on_action (sub { return '' } ); 
-
-my $method = SOAP::Data->name("ns1:getMovies") 
-    ->attr({'xmlns:ns1' => $namespace}); 
-
-#my @params = (
-#    SOAP::Data->name('arg0'=>3), 
-#    SOAP::Data->name('arg1'=>4)); 
-
-my $response =  $service->call($method=>@params);
-
-for my $movie ($response->valueof('//return')) {
-    while ( my ($key, $value) = each(%$movie) ) {
-	print "$key => $value\n";
-    }
-    print "\n";
-}
-
-
-
-
-
diff --git a/examples/moviefun-old/app/pom.xml b/examples/moviefun-old/app/pom.xml
deleted file mode 100644
index 6e331c0..0000000
--- a/examples/moviefun-old/app/pom.xml
+++ /dev/null
@@ -1,192 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 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. -->
-
-<!-- $Rev: 684173 $ $Date: 2008-08-08 20:13:24 -0700 (Fri, 08 Aug 2008) $ -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.superbiz</groupId>
-    <artifactId>moviefun</artifactId>
-    <version>1.1-SNAPSHOT</version>
-  </parent>
-  <groupId>org.superbiz</groupId>
-  <artifactId>moviefun-app</artifactId>
-  <packaging>war</packaging>
-  <version>1.1-SNAPSHOT</version>
-  <name>OpenEJB :: Web Examples :: Moviefun :: App</name>
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-  </properties>
-  <repositories>
-    <repository>
-      <id>apache-m2-snapshot</id>
-      <name>Apache Snapshot Repository</name>
-      <url>http://repository.apache.org/snapshots</url>
-    </repository>
-  </repositories>
-  <build>
-    <finalName>moviefun</finalName>
-    <defaultGoal>install</defaultGoal>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.12</version>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>2.4</version>
-        <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
-        </configuration>
-      </plugin>
-      <plugin>
-        <artifactId>maven-eclipse-plugin</artifactId>
-        <version>2.8</version>
-        <configuration>
-          <configuration>
-            <wtpapplicationxml>true</wtpapplicationxml>
-            <wtpversion>2.0</wtpversion>
-          </configuration>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.openejb.maven</groupId>
-        <artifactId>tomee-maven-plugin</artifactId>
-        <version>1.0.1-SNAPSHOT</version>
-        <configuration>
-          <tomeeClassifier>plus</tomeeClassifier>
-          <args>-Xmx512m -XX:PermSize=256m</args>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.openejb</groupId>
-      <artifactId>javaee-api</artifactId>
-      <version>6.0-4</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>4.10</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>jstl</artifactId>
-      <version>1.1.2</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.myfaces.core</groupId>
-      <artifactId>myfaces-impl</artifactId>
-      <version>2.1.6</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.openejb</groupId>
-      <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>taglibs</groupId>
-      <artifactId>standard</artifactId>
-      <version>1.1.2</version>
-    </dependency>
-    <dependency>
-      <groupId>org.superbiz</groupId>
-      <artifactId>moviefun-iface</artifactId>
-      <version>1.1-SNAPSHOT</version>
-      <type>jar</type>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>net.sourceforge.htmlunit</groupId>
-      <artifactId>htmlunit</artifactId>
-      <version>2.8</version>
-      <type>jar</type>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-  <!-- This section allows you to configure where to publish libraries for 
-    sharing. It is not required and may be deleted. For more information see: 
-    http://maven.apache.org/plugins/maven-deploy-plugin/ -->
-  <distributionManagement>
-    <repository>
-      <id>localhost</id>
-      <url>file://${basedir}/target/repo/</url>
-    </repository>
-    <snapshotRepository>
-      <id>localhost</id>
-      <url>file://${basedir}/target/snapshot-repo/</url>
-    </snapshotRepository>
-  </distributionManagement>
-
-  <profiles>
-    <profile>
-      <id>itest</id>
-      <build>
-        <defaultGoal>install</defaultGoal>
-        <plugins>
-          <plugin>
-            <groupId>com.googlecode.t7mp</groupId>
-            <artifactId>maven-t7-plugin</artifactId>
-            <version>0.9.6</version>
-            <configuration>
-              <tomcatHttpPort>9999</tomcatHttpPort>
-              <tomcatShutdownPort>9998</tomcatShutdownPort>
-              <tomcatVersion>7.0.27</tomcatVersion>
-              <webapps>
-                <webappArtifact>
-                  <groupId>org.apache.openejb</groupId>
-                  <artifactId>openejb-tomcat-webapp</artifactId>
-                  <version>4.5.1-SNAPSHOT</version>
-                  <contextPath>openejb</contextPath>
-                </webappArtifact>
-              </webapps>
-            </configuration>
-            <executions>
-              <execution>
-                <id>start-tomcat</id>
-                <goals>
-                  <goal>run</goal>
-                </goals>
-                <phase>pre-integration-test</phase>
-                <configuration>
-                  <tomcatSetAwait>false</tomcatSetAwait>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-          <plugin>
-            <artifactId>maven-failsafe-plugin</artifactId>
-            <version>2.6</version>
-            <executions>
-              <execution>
-                <goals>
-                  <goal>integration-test</goal>
-                  <goal>verify</goal>
-                </goals>
-              </execution>
-            </executions>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-  </profiles>
-</project>
diff --git a/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/ActionServlet.java b/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/ActionServlet.java
deleted file mode 100644
index a3c7e26..0000000
--- a/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/ActionServlet.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/**
- * 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.superbiz.moviefun;
-
-import javax.ejb.EJB;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.ListIterator;
-
-/**
- * @version $Revision$ $Date$
- */
-public class ActionServlet extends HttpServlet {
-
-    @EJB(name = "movies")
-    private Movies moviesBean;
-
-    @Override
-    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-        process(request, response);
-    }
-
-    @Override
-    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-        process(request, response);
-    }
-
-    private void process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-        HttpSession session = request.getSession();
-
-        List<Movie> movies = null;
-        ListIterator<Movie> listIterator = null;
-        int display = 5;
-
-        String action = request.getParameter("action");
-
-
-        if ("Add".equals(action)) {
-
-            String title = request.getParameter("title");
-            String director = request.getParameter("director");
-            String genre = request.getParameter("genre");
-            int rating = Integer.parseInt(request.getParameter("rating"));
-            int year = Integer.parseInt(request.getParameter("year"));
-
-            Movie movie = new Movie(title, director, genre, rating, year);
-
-            moviesBean.addMovie(movie);
-
-        } else if ("Remove".equals(action)) {
-
-            String[] ids = request.getParameterValues("id");
-            for (String id : ids) {
-                moviesBean.deleteMovieId(new Long(id));
-            }
-
-        } else if (">>".equals(action)) {
-
-            movies = (List) session.getAttribute("movies.collection");
-            listIterator = (ListIterator) session.getAttribute("movies.iterator");
-
-        } else if ("<<".equals(action)) {
-
-            movies = (List) session.getAttribute("movies.collection");
-            listIterator = (ListIterator) session.getAttribute("movies.iterator");
-            for (int i = display * 2; i > 0 && listIterator.hasPrevious(); i--) {
-                listIterator.previous(); // backup
-            }
-
-        } else if ("findByTitle".equals(action)) {
-
-            movies = moviesBean.findByTitle(request.getParameter("key"));
-
-        } else if ("findByDirector".equals(action)) {
-
-            movies = moviesBean.findByDirector(request.getParameter("key"));
-
-        } else if ("findByGenre".equals(action)) {
-
-            movies = moviesBean.findByGenre(request.getParameter("key"));
-        }
-
-        if (movies == null) {
-            try {
-                movies = moviesBean.getMovies();
-            } catch (Throwable e) {
-                // We must not have run setup yet
-                response.sendRedirect("setup.jsp");
-                return;
-            }
-        }
-
-        if (listIterator == null) {
-            listIterator = movies.listIterator();
-        }
-
-        session.setAttribute("movies.collection", movies);
-        session.setAttribute("movies.iterator", listIterator);
-
-        List<Movie> moviesToShow = new ArrayList<Movie>();
-
-        boolean hasPrevious = listIterator.hasPrevious();
-
-        int start = listIterator.nextIndex();
-
-        for (int i = display; i > 0 && listIterator.hasNext(); i--) {
-            Movie movie = (Movie) listIterator.next();
-            moviesToShow.add(movie);
-        }
-
-        boolean hasNext = listIterator.hasNext();
-
-        int end = listIterator.nextIndex();
-        request.setAttribute("movies", moviesToShow);
-        request.setAttribute("start", start);
-        request.setAttribute("end", end);
-        request.setAttribute("total", movies.size());
-        request.setAttribute("display", display);
-        request.setAttribute("hasNext", hasNext);
-        request.setAttribute("hasPrev", hasPrevious);
-
-        request.getRequestDispatcher("WEB-INF/moviefun.jsp").forward(request, response);
-    }
-
-}
diff --git a/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/MovieController.java b/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/MovieController.java
deleted file mode 100644
index f8280c0..0000000
--- a/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/MovieController.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/**
- * 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.superbiz.moviefun;
-
-import org.superbiz.moviefun.util.JsfUtil;
-import org.superbiz.moviefun.util.PaginationHelper;
-
-import javax.ejb.EJB;
-import javax.faces.bean.ManagedBean;
-import javax.faces.bean.SessionScoped;
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.convert.Converter;
-import javax.faces.convert.FacesConverter;
-import javax.faces.model.DataModel;
-import javax.faces.model.ListDataModel;
-import javax.faces.model.SelectItem;
-import java.io.Serializable;
-import java.util.ResourceBundle;
-
-@ManagedBean(name = "movieController")
-@SessionScoped
-public class MovieController implements Serializable {
-
-
-    private Movie current;
-    private DataModel items = null;
-    @EJB
-    private MoviesImpl ejbFacade;
-    private PaginationHelper pagination;
-    private int selectedItemIndex;
-
-    public MovieController() {
-    }
-
-    public Movie getSelected() {
-        if (current == null) {
-            current = new Movie();
-            selectedItemIndex = -1;
-        }
-        return current;
-    }
-
-    private MoviesImpl getFacade() {
-        return ejbFacade;
-    }
-
-    public PaginationHelper getPagination() {
-        if (pagination == null) {
-            pagination = new PaginationHelper(10) {
-
-                @Override
-                public int getItemsCount() {
-                    return getFacade().count();
-                }
-
-                @Override
-                public DataModel createPageDataModel() {
-                    return new ListDataModel(getFacade().findRange(new int[]{getPageFirstItem(), getPageFirstItem() + getPageSize()}));
-                }
-            };
-        }
-        return pagination;
-    }
-
-    public String prepareList() {
-        recreateModel();
-        return "List";
-    }
-
-    public String prepareView() {
-        current = (Movie) getItems().getRowData();
-        selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
-        return "View";
-    }
-
-    public String prepareCreate() {
-        current = new Movie();
-        selectedItemIndex = -1;
-        return "Create";
-    }
-
-    public String create() {
-        try {
-            getFacade().addMovie(current);
-            JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("MovieCreated"));
-            return prepareCreate();
-        } catch (Exception e) {
-            JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
-            return null;
-        }
-    }
-
-    public String prepareEdit() {
-        current = (Movie) getItems().getRowData();
-        selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
-        return "Edit";
-    }
-
-    public String update() {
-        try {
-            getFacade().editMovie(current);
-            JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("MovieUpdated"));
-            return "View";
-        } catch (Exception e) {
-            JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
-            return null;
-        }
-    }
-
-    public String destroy() {
-        current = (Movie) getItems().getRowData();
-        selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
-        performDestroy();
-        recreateModel();
-        return "List";
-    }
-
-    public String destroyAndView() {
-        performDestroy();
-        recreateModel();
-        updateCurrentItem();
-        if (selectedItemIndex >= 0) {
-            return "View";
-        } else {
-            // all items were removed - go back to list
-            recreateModel();
-            return "List";
-        }
-    }
-
-    private void performDestroy() {
-        try {
-            getFacade().deleteMovieId(current.getId());
-            JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("MovieDeleted"));
-        } catch (Exception e) {
-            JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
-        }
-    }
-
-    private void updateCurrentItem() {
-        int count = getFacade().count();
-        if (selectedItemIndex >= count) {
-            // selected index cannot be bigger than number of items:
-            selectedItemIndex = count - 1;
-            // go to previous page if last page disappeared:
-            if (pagination.getPageFirstItem() >= count) {
-                pagination.previousPage();
-            }
-        }
-        if (selectedItemIndex >= 0) {
-            current = getFacade().findRange(new int[]{selectedItemIndex, selectedItemIndex + 1}).get(0);
-        }
-    }
-
-    public DataModel getItems() {
-        if (items == null) {
-            items = getPagination().createPageDataModel();
-        }
-        return items;
-    }
-
-    private void recreateModel() {
-        items = null;
-    }
-
-    public String next() {
-        getPagination().nextPage();
-        recreateModel();
-        return "List";
-    }
-
-    public String previous() {
-        getPagination().previousPage();
-        recreateModel();
-        return "List";
-    }
-
-    public SelectItem[] getItemsAvailableSelectMany() {
-        return JsfUtil.getSelectItems(ejbFacade.getMovies(), false);
-    }
-
-    public SelectItem[] getItemsAvailableSelectOne() {
-        return JsfUtil.getSelectItems(ejbFacade.getMovies(), true);
-    }
-
-    @FacesConverter(forClass = Movie.class)
-    public static class MovieControllerConverter implements Converter {
-
-        public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
-            if (value == null || value.length() == 0) {
-                return null;
-            }
-            MovieController controller = (MovieController) facesContext.getApplication().getELResolver().
-                    getValue(facesContext.getELContext(), null, "movieController");
-            return controller.ejbFacade.find(getKey(value));
-        }
-
-        long getKey(String value) {
-            long key;
-            key = Long.parseLong(value);
-            return key;
-        }
-
-        String getStringKey(long value) {
-            StringBuffer sb = new StringBuffer();
-            sb.append(value);
-            return sb.toString();
-        }
-
-        public String getAsString(FacesContext facesContext, UIComponent component, Object object) {
-            if (object == null) {
-                return null;
-            }
-            if (object instanceof Movie) {
-                Movie o = (Movie) object;
-                return getStringKey(o.getId());
-            } else {
-                throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: " + MovieController.class.getName());
-            }
-        }
-
-    }
-
-}
diff --git a/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/MoviesImpl.java b/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/MoviesImpl.java
deleted file mode 100644
index 00816b6..0000000
--- a/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/MoviesImpl.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/**
- * 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.superbiz.moviefun;
-
-import javax.ejb.EJB;
-import javax.ejb.LocalBean;
-import javax.ejb.Stateless;
-import javax.jws.WebService;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.TypedQuery;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Path;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import javax.persistence.metamodel.EntityType;
-import java.util.List;
-
-@LocalBean
-@Stateless(name = "Movies")
-@WebService(portName = "MoviesPort",
-        serviceName = "MoviesWebService",
-        targetNamespace = "http://superbiz.org/wsdl")
-public class MoviesImpl implements Movies, MoviesRemote {
-
-    @EJB
-    private Notifier notifier;
-
-    @PersistenceContext(unitName = "movie-unit")
-    private EntityManager entityManager;
-
-    @Override
-    public Movie find(Long id) {
-        return entityManager.find(Movie.class, id);
-    }
-
-    @Override
-    public void addMovie(Movie movie) {
-        entityManager.persist(movie);
-    }
-
-    @Override
-    public void editMovie(Movie movie) {
-        entityManager.merge(movie);
-    }
-
-    @Override
-    public void deleteMovie(Movie movie) {
-        entityManager.remove(movie);
-        notifier.notify("Deleted Movie \"" + movie.getTitle() + "\" (" + movie.getYear() + ")");
-    }
-
-    @Override
-    public void deleteMovieId(long id) {
-        Movie movie = entityManager.find(Movie.class, id);
-        deleteMovie(movie);
-    }
-
-    @Override
-    public List<Movie> getMovies() {
-        CriteriaQuery<Movie> cq = entityManager.getCriteriaBuilder().createQuery(Movie.class);
-        cq.select(cq.from(Movie.class));
-        return entityManager.createQuery(cq).getResultList();
-    }
-
-    @Override
-    public List<Movie> findByTitle(String title) {
-        return findByStringField("title", title);
-    }
-
-    @Override
-    public List<Movie> findByGenre(String genre) {
-        return findByStringField("genre", genre);
-    }
-
-    @Override
-    public List<Movie> findByDirector(String director) {
-        return findByStringField("director", director);
-    }
-
-    private List<Movie> findByStringField(String fieldname, String param) {
-        CriteriaBuilder builder = entityManager.getCriteriaBuilder();
-        CriteriaQuery<Movie> query = builder.createQuery(Movie.class);
-        Root<Movie> root = query.from(Movie.class);
-        EntityType<Movie> type = entityManager.getMetamodel().entity(Movie.class);
-
-        Path<String> path = root.get(type.getDeclaredSingularAttribute(fieldname, String.class));
-        Predicate condition = builder.like(path, "%" + param + "%");
-
-        query.where(condition);
-
-        return entityManager.createQuery(query).getResultList();
-    }
-
-    @Override
-    public List<Movie> findRange(int[] range) {
-        CriteriaQuery<Movie> cq = entityManager.getCriteriaBuilder().createQuery(Movie.class);
-        cq.select(cq.from(Movie.class));
-        TypedQuery<Movie> q = entityManager.createQuery(cq);
-        q.setMaxResults(range[1] - range[0]);
-        q.setFirstResult(range[0]);
-        return q.getResultList();
-    }
-
-    @Override
-    public int count() {
-        CriteriaQuery<Long> cq = entityManager.getCriteriaBuilder().createQuery(Long.class);
-        Root<Movie> rt = cq.from(Movie.class);
-        cq.select(entityManager.getCriteriaBuilder().count(rt));
-        TypedQuery<Long> q = entityManager.createQuery(cq);
-        return (q.getSingleResult()).intValue();
-    }
-
-}
\ No newline at end of file
diff --git a/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/NotifierImpl.java b/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/NotifierImpl.java
deleted file mode 100644
index 96cedd0..0000000
--- a/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/NotifierImpl.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * 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.superbiz.moviefun;
-
-import javax.annotation.Resource;
-import javax.ejb.Stateless;
-import javax.jms.Connection;
-import javax.jms.ConnectionFactory;
-import javax.jms.DeliveryMode;
-import javax.jms.JMSException;
-import javax.jms.MessageProducer;
-import javax.jms.Session;
-import javax.jms.TextMessage;
-import javax.jms.Topic;
-
-@Stateless
-public class NotifierImpl implements Notifier {
-
-    @Resource
-    private ConnectionFactory connectionFactory;
-
-    @Resource(name = "notifications")
-    private Topic notificationsTopic;
-
-    public void notify(String message) {
-        try {
-            Connection connection = null;
-            Session session = null;
-
-            try {
-                connection = connectionFactory.createConnection();
-                connection.start();
-
-                // Create a Session
-                session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-
-                // Create a MessageProducer from the Session to the Topic or Queue
-                MessageProducer producer = session.createProducer(notificationsTopic);
-                producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
-
-                // Create a message
-                TextMessage textMessage = session.createTextMessage(message);
-
-                // Tell the producer to send the message
-                producer.send(textMessage);
-            } finally {
-                // Clean up
-                if (session != null) session.close();
-                if (connection != null) connection.close();
-            }
-        } catch (JMSException e) {
-            throw new IllegalStateException(e);
-        }
-
-    }
-
-}
diff --git a/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/util/JsfUtil.java b/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/util/JsfUtil.java
deleted file mode 100644
index 8c2ea51..0000000
--- a/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/util/JsfUtil.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * 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.superbiz.moviefun.util;
-
-import javax.faces.application.FacesMessage;
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.convert.Converter;
-import javax.faces.model.SelectItem;
-import java.util.List;
-
-public class JsfUtil {
-
-    public static SelectItem[] getSelectItems(List<?> entities, boolean selectOne) {
-        int size = selectOne ? entities.size() + 1 : entities.size();
-        SelectItem[] items = new SelectItem[size];
-        int i = 0;
-        if (selectOne) {
-            items[0] = new SelectItem("", "---");
-            i++;
-        }
-        for (Object x : entities) {
-            items[i++] = new SelectItem(x, x.toString());
-        }
-        return items;
-    }
-
-    public static void addErrorMessage(Exception ex, String defaultMsg) {
-        String msg = ex.getLocalizedMessage();
-        if (msg != null && msg.length() > 0) {
-            addErrorMessage(msg);
-        } else {
-            addErrorMessage(defaultMsg);
-        }
-    }
-
-    public static void addErrorMessages(List<String> messages) {
-        for (String message : messages) {
-            addErrorMessage(message);
-        }
-    }
-
-    public static void addErrorMessage(String msg) {
-        FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, msg);
-        FacesContext.getCurrentInstance().addMessage(null, facesMsg);
-    }
-
-    public static void addSuccessMessage(String msg) {
-        FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, msg);
-        FacesContext.getCurrentInstance().addMessage("successInfo", facesMsg);
-    }
-
-    public static String getRequestParameter(String key) {
-        return FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(key);
-    }
-
-    public static Object getObjectFromRequestParameter(String requestParameterName, Converter converter, UIComponent component) {
-        String theId = JsfUtil.getRequestParameter(requestParameterName);
-        return converter.getAsObject(FacesContext.getCurrentInstance(), component, theId);
-    }
-
-}
\ No newline at end of file
diff --git a/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/util/PaginationHelper.java b/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/util/PaginationHelper.java
deleted file mode 100644
index 6b3cc9a..0000000
--- a/examples/moviefun-old/app/src/main/java/org/superbiz/moviefun/util/PaginationHelper.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * 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.superbiz.moviefun.util;
-
-import javax.faces.model.DataModel;
-
-public abstract class PaginationHelper {
-
-    private int pageSize;
-    private int page;
-
-    public PaginationHelper(int pageSize) {
-        this.pageSize = pageSize;
-    }
-
-    public abstract int getItemsCount();
-
-    public abstract DataModel createPageDataModel();
-
-    public int getPageFirstItem() {
-        return page * pageSize;
-    }
-
-    public int getPageLastItem() {
-        int i = getPageFirstItem() + pageSize - 1;
-        int count = getItemsCount() - 1;
-        if (i > count) {
-            i = count;
-        }
-        if (i < 0) {
-            i = 0;
-        }
-        return i;
-    }
-
-    public boolean isHasNextPage() {
-        return (page + 1) * pageSize + 1 <= getItemsCount();
-    }
-
-    public void nextPage() {
-        if (isHasNextPage()) {
-            page++;
-        }
-    }
-
-    public boolean isHasPreviousPage() {
-        return page > 0;
-    }
-
-    public void previousPage() {
-        if (isHasPreviousPage()) {
-            page--;
-        }
-    }
-
-    public int getPageSize() {
-        return pageSize;
-    }
-
-}
diff --git a/examples/moviefun-old/app/src/main/resources/Bundle.properties b/examples/moviefun-old/app/src/main/resources/Bundle.properties
deleted file mode 100644
index f800333..0000000
--- a/examples/moviefun-old/app/src/main/resources/Bundle.properties
+++ /dev/null
@@ -1,87 +0,0 @@
-#
-# 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.
-#
-PersistenceErrorOccured=A persistence error occurred.
-Previous=Previous
-Next=Next
-
-MovieCreated=Movie was successfully created.
-MovieUpdated=Movie was successfully updated.
-MovieDeleted=Movie was successfully deleted.
-CreateMovieTitle=Create New Movie
-CreateMovieSaveLink=Save
-CreateMovieShowAllLink=Show All Movie Items
-CreateMovieIndexLink=Index
-CreateMovieLabel_id=Id:
-CreateMovieTitle_id=Id
-CreateMovieLabel_director=Director:
-CreateMovieTitle_director=Director
-CreateMovieLabel_title=Title:
-CreateMovieTitle_title=Title
-CreateMovieLabel_year=Year:
-CreateMovieTitle_year=Year
-CreateMovieLabel_genre=Genre:
-CreateMovieTitle_genre=Genre
-CreateMovieLabel_rating=Rating:
-CreateMovieTitle_rating=Rating
-EditMovieTitle=Edit Movie
-EditMovieSaveLink=Save
-EditMovieViewLink=View
-EditMovieShowAllLink=Show All Movie Items
-EditMovieIndexLink=Index
-EditMovieLabel_id=Id:
-EditMovieTitle_id=Id
-EditMovieLabel_director=Director:
-EditMovieTitle_director=Director
-EditMovieLabel_title=Title:
-EditMovieTitle_title=Title
-EditMovieLabel_year=Year:
-EditMovieTitle_year=Year
-EditMovieLabel_genre=Genre:
-EditMovieTitle_genre=Genre
-EditMovieLabel_rating=Rating:
-EditMovieTitle_rating=Rating
-ViewMovieTitle=View
-ViewMovieDestroyLink=Destroy
-ViewMovieEditLink=Edit
-ViewMovieCreateLink=Create New Movie
-ViewMovieShowAllLink=Show All Movie Items
-ViewMovieIndexLink=Index
-ViewMovieLabel_id=Id:
-ViewMovieTitle_id=Id
-ViewMovieLabel_director=Director:
-ViewMovieTitle_director=Director
-ViewMovieLabel_title=Title:
-ViewMovieTitle_title=Title
-ViewMovieLabel_year=Year:
-ViewMovieTitle_year=Year
-ViewMovieLabel_genre=Genre:
-ViewMovieTitle_genre=Genre
-ViewMovieLabel_rating=Rating:
-ViewMovieTitle_rating=Rating
-ListMovieTitle=List
-ListMovieEmpty=(No Movie Items Found)
-ListMovieDestroyLink=Destroy
-ListMovieEditLink=Edit
-ListMovieViewLink=View
-ListMovieCreateLink=Create New Movie
-ListMovieIndexLink=Index
-ListMovieTitle_id=Id
-ListMovieTitle_director=Director
-ListMovieTitle_title=Title
-ListMovieTitle_year=Year
-ListMovieTitle_genre=Genre
-ListMovieTitle_rating=Rating
diff --git a/examples/moviefun-old/app/src/main/resources/META-INF/ejb-jar.xml b/examples/moviefun-old/app/src/main/resources/META-INF/ejb-jar.xml
deleted file mode 100644
index 433757b..0000000
--- a/examples/moviefun-old/app/src/main/resources/META-INF/ejb-jar.xml
+++ /dev/null
@@ -1 +0,0 @@
-<ejb-jar/>
\ No newline at end of file
diff --git a/examples/moviefun-old/app/src/main/resources/META-INF/persistence.xml b/examples/moviefun-old/app/src/main/resources/META-INF/persistence.xml
deleted file mode 100644
index ec38aaa..0000000
--- a/examples/moviefun-old/app/src/main/resources/META-INF/persistence.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
--->
-<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
-             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
-  <persistence-unit name="movie-unit">
-    <jta-data-source>movieDatabase</jta-data-source>
-    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
-    <class>org.superbiz.moviefun.Movie</class>
-
-    <properties>
-      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
-    </properties>
-  </persistence-unit>
-</persistence>
diff --git a/examples/moviefun-old/app/src/main/webapp/META-INF/context.xml b/examples/moviefun-old/app/src/main/webapp/META-INF/context.xml
deleted file mode 100644
index 764d617..0000000
--- a/examples/moviefun-old/app/src/main/webapp/META-INF/context.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
--->
-<Context antiJARLocking="true" path="/moviefun"/>
diff --git a/examples/moviefun-old/app/src/main/webapp/WEB-INF/faces-config.xml b/examples/moviefun-old/app/src/main/webapp/WEB-INF/faces-config.xml
deleted file mode 100644
index 78f5e8f..0000000
--- a/examples/moviefun-old/app/src/main/webapp/WEB-INF/faces-config.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!--
-
-    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.
--->
-<faces-config version="2.0"
-              xmlns="http://java.sun.com/xml/ns/javaee"
-              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
-  <application>
-    <resource-bundle>
-      <base-name>/Bundle</base-name>
-      <var>bundle</var>
-    </resource-bundle>
-  </application>
-</faces-config>
diff --git a/examples/moviefun-old/app/src/main/webapp/WEB-INF/moviefun.jsp b/examples/moviefun-old/app/src/main/webapp/WEB-INF/moviefun.jsp
deleted file mode 100644
index 3353a96..0000000
--- a/examples/moviefun-old/app/src/main/webapp/WEB-INF/moviefun.jsp
+++ /dev/null
@@ -1,134 +0,0 @@
-<%--
-    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.
---%>
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
-<%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c' %>
-
-<html>
-<head><title>Moviefun :: Index</title>
-    <link rel="stylesheet" href="default.css" type="text/css"/>
-
-</head>
-<body>
-<p/>
-<div id="Content">
-<table>
-<tr>
-<td>
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-    <tr class="topBar">
-        <td align="left" width="85%">&nbsp;
-            <span class="topBarDiv">Mini-Movie Application</span>
-        </td>
-        <td align="right" valign="middle" width="1%" nowrap>
-            <form method="POST" action="moviefun" name="findMovie" style="padding: 1px; margin: 1px">
-            <select name="action">
-                <option value="findByTitle">Title</option>
-                <option value="findByDirector">Director</option>
-                <option value="findByGenre">Genre</option>
-            </select>
-            <input type="text" name="key" size="20"/>
-            <input type="submit" value="Search"/>
-            </form>
-        </td>
-    </tr>
-    </table>
-
-</td>
-</tr>
-<tr>
-<td>
-    <div class="basicPanelContainer" style="width: 100%">
-
-        <div class="basicPanelTitle">Movies</div>
-
-        <div class="basicPanelBody">
-            <form method="POST" action="moviefun" name="listMovies" style="padding: 1px; margin: 1px">
-            <table class="tableview" width="100%" cellspacing="0" cellpadding="0" style="padding: 5px">
-            <tr>
-            <th>Title</th>
-            <th>Director</th>
-            <th>Genre</th>
-            <th>Rating</th>
-            <th>Year</th>
-            <th>&nbsp;</th>
-            </tr>
-            <c:forEach var="movie" items="${movies}">
-            <tr>
-            <td width="200"><c:out value="${movie.title}" /></td>
-            <td width="120"><c:out value="${movie.director}" /></td>
-            <td width="90"><c:out value="${movie.genre}" /></td>
-            <td width="50"><c:out value="${movie.rating}" /></td>
-            <td width="50"><c:out value="${movie.year}" /></td>
-            <td><input type="checkbox" name="id" value="<c:out value="${movie.id}" />"></td>
-            </tr>
-
-            </c:forEach>
-            </table>
-            <table width="100%" cellspacing="0" cellpadding="0" style="padding: 5px">
-            <tr>
-            <td>
-            <c:if test="${hasPrev}"><input type="submit" name="action" value="<<"/></c:if>
-
-            <c:out value="${start+1}" /> -  <c:out value="${end}" /> of  <c:out value="${total}" />
-
-            <c:if test="${hasNext}"><input type="submit" name="action" value=">>"/></c:if>
-            </td>
-            </tr>
-            </table>
-            </form>
-        </div>
-    </div>
-</td>
-</tr>
-<tr>
-<td>
-    <div class="basicPanelContainer" style="width: 100%">
-        <div class="basicPanelTitle">Add</div>
-        <div class="basicPanelBody">
-            <form method="POST" action="moviefun" name="addMovie" style="padding: 1px; margin: 1px">
-            <table width="100%" cellspacing="0" cellpadding="0" style="padding: 0px">
-            <tr>
-            <td width="200"><input type="text" name="title" size="29"/></td>
-            <td width="120"><input type="text" name="director" size="17"/></td>
-            <td width="90"><input type="text" name="genre" size="14"/></td>
-            <td width="50"><input type="text" name="rating" size="7"/></td>
-            <td width="50"><input type="text" name="year" size="4"/></td>
-            <td><input type="submit" name="action" value="Add"/></td>
-            </tr>
-            </table>
-            </form>
-
-        </div>
-    </div>
-</td>
-</tr>
-</table>
-
-    <div class="bottomshadow"></div>
-
-    <div id="poweredby" class="smalltext">
-        Powered by
-        <a href="http://tomcat.apache.org" class="smalltext">Apache Tomcat</a> and
-        <a href="http://openejb.apache.org" class="smalltext">Apache OpenEJB</a>.
-        <br/>
-    </div>
-
-
-</div>
-</body>
-</html>
\ No newline at end of file
diff --git a/examples/moviefun-old/app/src/main/webapp/WEB-INF/web.xml b/examples/moviefun-old/app/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index 51a96de..0000000
--- a/examples/moviefun-old/app/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
--->
-<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
-  <context-param>
-    <param-name>javax.faces.PROJECT_STAGE</param-name>
-    <param-value>Development</param-value>
-  </context-param>
-  <servlet>
-    <servlet-name>ActionServlet</servlet-name>
-    <servlet-class>org.superbiz.moviefun.ActionServlet</servlet-class>
-  </servlet>
-  <servlet>
-    <servlet-name>Faces Servlet</servlet-name>
-    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
-    <load-on-startup>1</load-on-startup>
-  </servlet>
-  <servlet-mapping>
-    <servlet-name>Faces Servlet</servlet-name>
-    <url-pattern>/faces/*</url-pattern>
-  </servlet-mapping>
-  <servlet-mapping>
-    <servlet-name>ActionServlet</servlet-name>
-    <url-pattern>/moviefun/*</url-pattern>
-  </servlet-mapping>
-  <welcome-file-list>
-    <welcome-file>index.jsp</welcome-file>
-  </welcome-file-list>
-</web-app>
diff --git a/examples/moviefun-old/app/src/main/webapp/default.css b/examples/moviefun-old/app/src/main/webapp/default.css
deleted file mode 100644
index 991f911..0000000
--- a/examples/moviefun-old/app/src/main/webapp/default.css
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- *  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.
- *
- */
-body, p, td, table, tr, .bodytext, .stepfield {
-  font-family: Verdana, arial, sans-serif;
-  font-size: 11px;
-  line-height: 16px;
-  color: #000000;
-  font-weight: normal;
-}
-
-body {
-  margin: 0px;
-  padding: 0px;
-  text-align: center;
-  background-color: #f0f0f0;
-}
-
-#Content {
-  text-align: left;
-  background-color: #fff;
-  padding: 0px;
-  margin: 0px;
-}
-
-HR {
-  color: 3 c78b5;
-  height: 1;
-}
-
-A:link, A:visited, A:active, A:hover {
-  color: #003366;
-}
-
-h1 A:link, h1 A:visited, h1 A:active {
-  text-decoration: none;
-}
-
-h1 A:hover {
-  border-bottom: 1px dotted #003366;
-}
-
-input {
-  font-family: verdana, geneva, arial, sans-serif;
-  font-size: 11px;
-  color: #000000;
-}
-
-h1 {
-  font-size: 24px;
-  line-height: normal;
-  font-weight: bold;
-  background-color: #f0f0f0;
-  color: #003366;
-  border-bottom: 1px solid #3c78b5;
-  padding: 2px;
-  margin: 36px 0px 4px 0px;
-}
-
-h2 {
-  font-size: 18px;
-  line-height: normal;
-  font-weight: bold;
-  background-color: #f0f0f0;
-  border-bottom: 1px solid #3c78b5;
-  padding: 2px;
-  margin: 27px 0px 4px 0px;
-}
-
-h3 {
-  font-size: 14px;
-  line-height: normal;
-  font-weight: bold;
-  background-color: #f0f0f0;
-  padding: 2px;
-  margin: 21px 0px 4px 0px;
-}
-
-h4 {
-  font-size: 12px;
-  line-height: normal;
-  font-weight: bold;
-  background-color: #f0f0f0;
-  padding: 2px;
-  margin: 18px 0px 4px 0px;
-}
-
-h4.search {
-  font-size: 12px;
-  line-height: normal;
-  font-weight: normal;
-  background-color: #f0f0f0;
-  padding: 4px;
-  margin: 18px 0px 4px 0px;
-}
-
-h5 {
-  font-size: 10px;
-  line-height: normal;
-  font-weight: bold;
-  background-color: #f0f0f0;
-  padding: 2px;
-  margin: 14px 0px 4px 0px;
-}
-
-h6 {
-  font-size: 8px;
-  line-height: normal;
-  font-weight: bold;
-  background-color: #f0f0f0;
-  padding: 2px;
-  margin: 14px 0px 4px 0px;
-}
-
-.smalltext {
-  color: #666666;
-  font-size: 10px;
-}
-
-.smalltext a {
-  color: #666666;
-}
-
-.tableview table {
-  margin: 0;
-}
-
-.tableview th {
-  text-align: left;
-  color: #003366;
-  font-size: 12px;
-  padding: 5px 0px 0px 5px;
-  border-bottom: 2px solid #3c78b5;
-}
-
-.tableview td {
-  text-align: left;
-  border-color: #ccc;
-  border-width: 0px 0px 1px 0px;
-  border-style: solid;
-  margin: 0;
-  padding: 4px 10px 4px 5px;
-}
-
-.bottomshadow {
-  height: 12px;
-  background-image: url("/images/border/border_bottom.gif");
-  background-repeat: repeat-x;
-}
-
-.topBarDiv a:link {
-  color: white;
-}
-
-.topBarDiv a:visited {
-  color: white;
-}
-
-.topBarDiv a:active {
-  color: white;
-}
-
-.topBarDiv a:hover {
-  color: white;
-}
-
-.topBarDiv {
-  color: white;
-}
-
-.topBar td {
-  background-color: #003366;
-}
-
-.basicPanelContainer {
-  border: 1px solid #3c78b5;
-  margin-top: 2px;
-  margin-bottom: 8px;
-  width: 100%
-}
-
-.basicPanelTitle {
-  padding: 5px;
-  margin: 0px;
-  background-color: #f0f0f0;
-  color: black;
-  font-weight: bold;
-}
-
-.basicPanelBody {
-  padding: 5px;
-  margin: 0px
-}
diff --git a/examples/moviefun-old/app/src/main/webapp/index.jsp b/examples/moviefun-old/app/src/main/webapp/index.jsp
deleted file mode 100644
index 30ba1f8..0000000
--- a/examples/moviefun-old/app/src/main/webapp/index.jsp
+++ /dev/null
@@ -1,43 +0,0 @@
-<%--
-    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.
---%>
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<html>
-<head><title>Moviefun :: Index</title>
-    <link rel="stylesheet" href="default.css" type="text/css"/>
-</head>
-<body>
-<p/>
-
-<div id="Content">
-	<p>Please select one of the following links:</p>
-	<a href="setup.jsp">Setup</a> - Sets up the application with some sample data<br />
-	<a href="moviefun">JSP</a> - Use the JSP version of the application<br />
-	<a href="faces/index.xhtml">JSF</a> - Use the JSF 2 version of the application<br />
-
-    <div class="bottomshadow"></div>
-
-    <div id="poweredby" class="smalltext">
-        Powered by
-        <a href="http://tomcat.apache.org" class="smalltext">Apache Tomcat</a> and
-        <a href="http://openejb.apache.org" class="smalltext">Apache OpenEJB</a>.
-        <br/>
-    </div>
-
-
-</div>
-</body>
-</html>
\ No newline at end of file
diff --git a/examples/moviefun-old/app/src/main/webapp/index.xhtml b/examples/moviefun-old/app/src/main/webapp/index.xhtml
deleted file mode 100644
index 387cb5a..0000000
--- a/examples/moviefun-old/app/src/main/webapp/index.xhtml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' ?>
-<!--
-
-    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.
--->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:h="http://java.sun.com/jsf/html">
-<h:head>
-  <title>Moviefun Sample Application :: JSF 2.0</title>
-  <h:outputStylesheet name="css/jsfcrud.css"/>
-</h:head>
-<h:body>
-  Welcome to the Moviefun sample application!
-  <h:form>
-    <h:commandLink action="/movie/List" value="Show All Movie Items"/>
-  </h:form>
-</h:body>
-
-</html>
-
diff --git a/examples/moviefun-old/app/src/main/webapp/movie/Create.xhtml b/examples/moviefun-old/app/src/main/webapp/movie/Create.xhtml
deleted file mode 100644
index b837598..0000000
--- a/examples/moviefun-old/app/src/main/webapp/movie/Create.xhtml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!--
-
-    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.
--->
-<html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:ui="http://java.sun.com/jsf/facelets"
-      xmlns:h="http://java.sun.com/jsf/html"
-      xmlns:f="http://java.sun.com/jsf/core">
-
-<ui:composition template="/template.xhtml">
-  <ui:define name="title">
-    <h:outputText value="#{bundle.CreateMovieTitle}"></h:outputText>
-  </ui:define>
-  <ui:define name="body">
-    <h:panelGroup id="messagePanel" layout="block">
-      <h:messages errorStyle="color: red" infoStyle="color: green" layout="table"/>
-    </h:panelGroup>
-    <h:form>
-      <h:panelGrid columns="2">
-        <h:outputLabel value="#{bundle.CreateMovieLabel_id}" for="id"/>
-        <h:inputText id="id" value="#{movieController.selected.id}" title="#{bundle.CreateMovieTitle_id}"/>
-        <h:outputLabel value="#{bundle.CreateMovieLabel_director}" for="director"/>
-        <h:inputText id="director" value="#{movieController.selected.director}"
-                     title="#{bundle.CreateMovieTitle_director}"/>
-        <h:outputLabel value="#{bundle.CreateMovieLabel_title}" for="title"/>
-        <h:inputText id="title" value="#{movieController.selected.title}" title="#{bundle.CreateMovieTitle_title}"/>
-        <h:outputLabel value="#{bundle.CreateMovieLabel_year}" for="year"/>
-        <h:inputText id="year" value="#{movieController.selected.year}" title="#{bundle.CreateMovieTitle_year}"/>
-        <h:outputLabel value="#{bundle.CreateMovieLabel_genre}" for="genre"/>
-        <h:inputText id="genre" value="#{movieController.selected.genre}" title="#{bundle.CreateMovieTitle_genre}"/>
-        <h:outputLabel value="#{bundle.CreateMovieLabel_rating}" for="rating"/>
-        <h:inputText id="rating" value="#{movieController.selected.rating}" title="#{bundle.CreateMovieTitle_rating}"/>
-      </h:panelGrid>
-      <br/>
-      <h:commandLink action="#{movieController.create}" value="#{bundle.CreateMovieSaveLink}"/>
-      <br/>
-      <br/>
-      <h:commandLink action="#{movieController.prepareList}" value="#{bundle.CreateMovieShowAllLink}" immediate="true"/>
-      <br/>
-      <br/>
-      <h:commandLink value="#{bundle.CreateMovieIndexLink}" action="/index" immediate="true"/>
-    </h:form>
-  </ui:define>
-</ui:composition>
-
-</html>
diff --git a/examples/moviefun-old/app/src/main/webapp/movie/Edit.xhtml b/examples/moviefun-old/app/src/main/webapp/movie/Edit.xhtml
deleted file mode 100644
index 995bfd6..0000000
--- a/examples/moviefun-old/app/src/main/webapp/movie/Edit.xhtml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!--
-
-    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.
--->
-<html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:ui="http://java.sun.com/jsf/facelets"
-      xmlns:h="http://java.sun.com/jsf/html"
-      xmlns:f="http://java.sun.com/jsf/core">
-
-<ui:composition template="/template.xhtml">
-  <ui:define name="title">
-    <h:outputText value="#{bundle.EditMovieTitle}"></h:outputText>
-  </ui:define>
-  <ui:define name="body">
-    <h:panelGroup id="messagePanel" layout="block">
-      <h:messages errorStyle="color: red" infoStyle="color: green" layout="table"/>
-    </h:panelGroup>
-    <h:form>
-      <h:panelGrid columns="2">
-        <h:outputLabel value="#{bundle.EditMovieLabel_id}" for="id"/>
-        <h:inputText id="id" value="#{movieController.selected.id}" title="#{bundle.EditMovieTitle_id}"/>
-        <h:outputLabel value="#{bundle.EditMovieLabel_director}" for="director"/>
-        <h:inputText id="director" value="#{movieController.selected.director}"
-                     title="#{bundle.EditMovieTitle_director}"/>
-        <h:outputLabel value="#{bundle.EditMovieLabel_title}" for="title"/>
-        <h:inputText id="title" value="#{movieController.selected.title}" title="#{bundle.EditMovieTitle_title}"/>
-        <h:outputLabel value="#{bundle.EditMovieLabel_year}" for="year"/>
-        <h:inputText id="year" value="#{movieController.selected.year}" title="#{bundle.EditMovieTitle_year}"/>
-        <h:outputLabel value="#{bundle.EditMovieLabel_genre}" for="genre"/>
-        <h:inputText id="genre" value="#{movieController.selected.genre}" title="#{bundle.EditMovieTitle_genre}"/>
-        <h:outputLabel value="#{bundle.EditMovieLabel_rating}" for="rating"/>
-        <h:inputText id="rating" value="#{movieController.selected.rating}" title="#{bundle.EditMovieTitle_rating}"/>
-      </h:panelGrid>
-      <h:commandLink action="#{movieController.update}" value="#{bundle.EditMovieSaveLink}"/>
-      <br/>
-      <br/>
-      <h:commandLink action="View" value="#{bundle.EditMovieViewLink}" immediate="true"/>
-      <br/>
-      <h:commandLink action="#{movieController.prepareList}" value="#{bundle.EditMovieShowAllLink}" immediate="true"/>
-      <br/>
-      <br/>
-      <h:commandLink value="#{bundle.EditMovieIndexLink}" action="/index" immediate="true"/>
-    </h:form>
-  </ui:define>
-</ui:composition>
-
-</html>
diff --git a/examples/moviefun-old/app/src/main/webapp/movie/List.xhtml b/examples/moviefun-old/app/src/main/webapp/movie/List.xhtml
deleted file mode 100644
index 6be04ed..0000000
--- a/examples/moviefun-old/app/src/main/webapp/movie/List.xhtml
+++ /dev/null
@@ -1,106 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!--
-
-    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.
--->
-<html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:ui="http://java.sun.com/jsf/facelets"
-      xmlns:h="http://java.sun.com/jsf/html"
-      xmlns:f="http://java.sun.com/jsf/core">
-
-<ui:composition template="/template.xhtml">
-  <ui:define name="title">
-    <h:outputText value="#{bundle.ListMovieTitle}"></h:outputText>
-  </ui:define>
-  <ui:define name="body">
-    <h:form styleClass="jsfcrud_list_form">
-      <h:panelGroup id="messagePanel" layout="block">
-        <h:messages errorStyle="color: red" infoStyle="color: green" layout="table"/>
-      </h:panelGroup>
-      <h:outputText escape="false" value="#{bundle.ListMovieEmpty}" rendered="#{movieController.items.rowCount == 0}"/>
-      <h:panelGroup rendered="#{movieController.items.rowCount > 0}">
-        <h:outputText
-                value="#{movieController.pagination.pageFirstItem + 1}..#{movieController.pagination.pageLastItem + 1}/#{movieController.pagination.itemsCount}"/>
-        &nbsp;
-        <h:commandLink action="#{movieController.previous}"
-                       value="#{bundle.Previous} #{movieController.pagination.pageSize}"
-                       rendered="#{movieController.pagination.hasPreviousPage}"/>
-        &nbsp;
-        <h:commandLink action="#{movieController.next}" value="#{bundle.Next} #{movieController.pagination.pageSize}"
-                       rendered="#{movieController.pagination.hasNextPage}"/>
-        &nbsp;
-        <h:dataTable value="#{movieController.items}" var="item" border="0" cellpadding="2" cellspacing="0"
-                     rowClasses="jsfcrud_odd_row,jsfcrud_even_row" rules="all" style="border:solid 1px">
-          <h:column>
-            <f:facet name="header">
-              <h:outputText value="#{bundle.ListMovieTitle_id}"/>
-            </f:facet>
-            <h:outputText value="#{item.id}"/>
-          </h:column>
-          <h:column>
-            <f:facet name="header">
-              <h:outputText value="#{bundle.ListMovieTitle_director}"/>
-            </f:facet>
-            <h:outputText value="#{item.director}"/>
-          </h:column>
-          <h:column>
-            <f:facet name="header">
-              <h:outputText value="#{bundle.ListMovieTitle_title}"/>
-            </f:facet>
-            <h:outputText value="#{item.title}"/>
-          </h:column>
-          <h:column>
-            <f:facet name="header">
-              <h:outputText value="#{bundle.ListMovieTitle_year}"/>
-            </f:facet>
-            <h:outputText value="#{item.year}"/>
-          </h:column>
-          <h:column>
-            <f:facet name="header">
-              <h:outputText value="#{bundle.ListMovieTitle_genre}"/>
-            </f:facet>
-            <h:outputText value="#{item.genre}"/>
-          </h:column>
-          <h:column>
-            <f:facet name="header">
-              <h:outputText value="#{bundle.ListMovieTitle_rating}"/>
-            </f:facet>
-            <h:outputText value="#{item.rating}"/>
-          </h:column>
-          <h:column>
-            <f:facet name="header">
-              <h:outputText value="&nbsp;"/>
-            </f:facet>
-            <h:commandLink action="#{movieController.prepareView}" value="#{bundle.ListMovieViewLink}"/>
-            <h:outputText value=" "/>
-            <h:commandLink action="#{movieController.prepareEdit}" value="#{bundle.ListMovieEditLink}"/>
-            <h:outputText value=" "/>
-            <h:commandLink action="#{movieController.destroy}" value="#{bundle.ListMovieDestroyLink}"/>
-          </h:column>
-        </h:dataTable>
-      </h:panelGroup>
-      <br/>
-      <h:commandLink action="#{movieController.prepareCreate}" value="#{bundle.ListMovieCreateLink}"/>
-      <br/>
-      <br/>
-      <h:commandLink value="#{bundle.ListMovieIndexLink}" action="/index" immediate="true"/>
-    </h:form>
-  </ui:define>
-</ui:composition>
-
-</html>
diff --git a/examples/moviefun-old/app/src/main/webapp/movie/View.xhtml b/examples/moviefun-old/app/src/main/webapp/movie/View.xhtml
deleted file mode 100644
index 8544047..0000000
--- a/examples/moviefun-old/app/src/main/webapp/movie/View.xhtml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!--
-
-    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.
--->
-<html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:ui="http://java.sun.com/jsf/facelets"
-      xmlns:h="http://java.sun.com/jsf/html"
-      xmlns:f="http://java.sun.com/jsf/core">
-
-<ui:composition template="/template.xhtml">
-  <ui:define name="title">
-    <h:outputText value="#{bundle.ViewMovieTitle}"></h:outputText>
-  </ui:define>
-  <ui:define name="body">
-    <h:panelGroup id="messagePanel" layout="block">
-      <h:messages errorStyle="color: red" infoStyle="color: green" layout="table"/>
-    </h:panelGroup>
-    <h:form>
-      <h:panelGrid columns="2">
-        <h:outputText value="#{bundle.ViewMovieLabel_id}"/>
-        <h:outputText value="#{movieController.selected.id}" title="#{bundle.ViewMovieTitle_id}"/>
-        <h:outputText value="#{bundle.ViewMovieLabel_director}"/>
-        <h:outputText value="#{movieController.selected.director}" title="#{bundle.ViewMovieTitle_director}"/>
-        <h:outputText value="#{bundle.ViewMovieLabel_title}"/>
-        <h:outputText value="#{movieController.selected.title}" title="#{bundle.ViewMovieTitle_title}"/>
-        <h:outputText value="#{bundle.ViewMovieLabel_year}"/>
-        <h:outputText value="#{movieController.selected.year}" title="#{bundle.ViewMovieTitle_year}"/>
-        <h:outputText value="#{bundle.ViewMovieLabel_genre}"/>
-        <h:outputText value="#{movieController.selected.genre}" title="#{bundle.ViewMovieTitle_genre}"/>
-        <h:outputText value="#{bundle.ViewMovieLabel_rating}"/>
-        <h:outputText value="#{movieController.selected.rating}" title="#{bundle.ViewMovieTitle_rating}"/>
-      </h:panelGrid>
-      <br/>
-      <h:commandLink action="#{movieController.destroyAndView}" value="#{bundle.ViewMovieDestroyLink}"/>
-      <br/>
-      <br/>
-      <h:commandLink action="Edit" value="#{bundle.ViewMovieEditLink}"/>
-      <br/>
-      <h:commandLink action="#{movieController.prepareCreate}" value="#{bundle.ViewMovieCreateLink}"/>
-      <br/>
-      <h:commandLink action="#{movieController.prepareList}" value="#{bundle.ViewMovieShowAllLink}"/>
-      <br/>
-      <br/>
-      <h:commandLink value="#{bundle.ViewMovieIndexLink}" action="/index" immediate="true"/>
-
-    </h:form>
-  </ui:define>
-</ui:composition>
-
-</html>
diff --git a/examples/moviefun-old/app/src/main/webapp/resources/css/jsfcrud.css b/examples/moviefun-old/app/src/main/webapp/resources/css/jsfcrud.css
deleted file mode 100644
index d77b1b9..0000000
--- a/examples/moviefun-old/app/src/main/webapp/resources/css/jsfcrud.css
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- *  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.
- *
- */
-root {
-  display: block;
-}
-
-body {
-  font-family: Arial, Helvetica, sans-serif;
-  color: #3a4f54;
-  background-color: #dfecf1;
-  font-size: small;
-}
-
-a {
-  color: #e33b06;
-}
-
-table {
-  empty-cells: show;
-}
-
-form.jsfcrud_list_form th, td th {
-  font-size: x-small;
-  color: #4e6a71;
-  border-top-style: solid;
-  border-bottom-style: solid;
-  border-left-style: solid;
-  border-right-style: solid;
-  border-top-width: 1px;
-  border-bottom-width: 1px;
-  border-left-width: 1px;
-  border-right-width: 1px;
-  border-top-color: #b2d5d6;
-  border-bottom-color: #b2d5d6;
-  border-left-color: #90b4bd;
-  border-right-color: #90b4bd;
-  letter-spacing: 3px;
-  text-align: left;
-  padding-top: 6px;
-  padding-bottom: 6px;
-  padding-left: 6px;
-  padding-right: 6px;
-  background-color: #b2d5d6;
-}
-
-td {
-  vertical-align: top;
-  padding-bottom: 8px;
-  font-size: small;
-}
-
-form.jsfcrud_list_form td, td td {
-  border-top-style: solid;
-  border-bottom-style: solid;
-  border-left-style: solid;
-  border-right-style: solid;
-  border-top-width: 1px;
-  border-bottom-width: 1px;
-  border-left-width: 1px;
-  border-right-width: 1px;
-  border-top-color: #b2d5d6;
-  border-bottom-color: #b2d5d6;
-  border-left-color: #b2d5d6;
-  border-right-color: #b2d5d6;
-  vertical-align: baseline;
-  padding-bottom: 0px;
-}
-
-tr.jsfcrud_odd_row {
-  background-color: #fefeff;
-  color: #4e6a71;
-}
-
-tr.jsfcrud_even_row {
-  background-color: #eff5fa;
-  color: #4e6a71;
-}
-
-#busyImage {
-  position: absolute;
-  left: 50%;
-  top: 50%;
-}
diff --git a/examples/moviefun-old/app/src/main/webapp/setup.jsp b/examples/moviefun-old/app/src/main/webapp/setup.jsp
deleted file mode 100644
index be4f7d2..0000000
--- a/examples/moviefun-old/app/src/main/webapp/setup.jsp
+++ /dev/null
@@ -1,65 +0,0 @@
-<%--
-    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.
---%>
-<%@ page import=" org.superbiz.moviefun.Movie" %>
-<%@ page import="org.superbiz.moviefun.Movies" %>
-<%@ page import="javax.naming.InitialContext" %>
-<%@ page import="java.util.Iterator" %>
-<%@ page import="java.util.List" %>
-
-<h2>Setup</h2>
-<%
-    InitialContext initialContext = new InitialContext();
-    Movies moviesBean = (Movies) initialContext.lookup("java:comp/env/movies");
-
-    moviesBean.addMovie(new Movie("Wedding Crashers", "David Dobkin", "Comedy", 7, 2005));
-    moviesBean.addMovie(new Movie("Starsky & Hutch", "Todd Phillips", "Action", 6, 2004));
-    moviesBean.addMovie(new Movie("Shanghai Knights", "David Dobkin", "Action", 6, 2003));
-    moviesBean.addMovie(new Movie("I-Spy", "Betty Thomas", "Adventure", 5, 2002));
-    moviesBean.addMovie(new Movie("The Royal Tenenbaums", "Wes Anderson", "Comedy", 8, 2001));
-    moviesBean.addMovie(new Movie("Zoolander", "Ben Stiller", "Comedy", 6, 2001));
-    moviesBean.addMovie(new Movie("Shanghai Noon", "Tom Dey", "Comedy", 7, 2000));
-%>
-Done!
-
-<h2>Seeded Database with the Following movies</h2>
-<table width="500">
-    <tr>
-        <td><b>Title</b></td>
-        <td><b>Director</b></td>
-        <td><b>Genre</b></td>
-    </tr>
-    <%
-        List<Movie> movies = moviesBean.getMovies();
-        for (Iterator iterator = movies.iterator(); iterator.hasNext();) {
-            Movie movie = (Movie) iterator.next();
-    %>
-    <tr>
-        <td><%=movie.getTitle()%>
-        </td>
-        <td><%=movie.getDirector()%>
-        </td>
-        <td><%=movie.getGenre()%>
-        </td>
-    </tr>
-
-    <%
-        }
-    %>
-</table>
-
-<h2>Continue</h2>
-<a href="moviefun">Go to main app</a>
\ No newline at end of file
diff --git a/examples/moviefun-old/app/src/main/webapp/template.xhtml b/examples/moviefun-old/app/src/main/webapp/template.xhtml
deleted file mode 100644
index e68106a..0000000
--- a/examples/moviefun-old/app/src/main/webapp/template.xhtml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' ?>
-<!--
-
-    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.
--->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:ui="http://java.sun.com/jsf/facelets"
-      xmlns:h="http://java.sun.com/jsf/html">
-<h:head>
-  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-  <title>
-    <ui:insert name="title">Moviefun</ui:insert>
-  </title>
-  <h:outputStylesheet name="css/jsfcrud.css"/>
-</h:head>
-
-<h:body>
-  <h1>
-    <ui:insert name="title">Default Title</ui:insert>
-  </h1>
-  <p>
-    <ui:insert name="body">Default Body</ui:insert>
-  </p>
-</h:body>
-
-</html>
diff --git a/examples/moviefun-old/app/src/test/java/org/superbiz/moviefun/MoviesIT.java b/examples/moviefun-old/app/src/test/java/org/superbiz/moviefun/MoviesIT.java
deleted file mode 100644
index 5c687a7..0000000
--- a/examples/moviefun-old/app/src/test/java/org/superbiz/moviefun/MoviesIT.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * 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.superbiz.moviefun;
-
-import com.gargoylesoftware.htmlunit.WebClient;
-import com.gargoylesoftware.htmlunit.html.DomNodeList;
-import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
-import com.gargoylesoftware.htmlunit.html.HtmlElement;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import org.junit.Test;
-
-import java.util.Iterator;
-
-import static org.junit.Assert.assertTrue;
-
-public class MoviesIT {
-
-    @Test
-    public void testShouldMakeSureWebappIsWorking() throws Exception {
-        WebClient webClient = new WebClient();
-        HtmlPage page = webClient.getPage("http://localhost:9999/moviefun/setup.jsp");
-
-        assertMoviesPresent(page);
-
-        page = webClient.getPage("http://localhost:9999/moviefun/faces/movie/List.xhtml");
-
-        assertMoviesPresent(page);
-        webClient.closeAllWindows();
-    }
-
-    private void assertMoviesPresent(HtmlPage page) {
-        String pageAsText = page.asText();
-        assertTrue(pageAsText.contains("Wedding Crashers"));
-        assertTrue(pageAsText.contains("Starsky & Hutch"));
-        assertTrue(pageAsText.contains("Shanghai Knights"));
-        assertTrue(pageAsText.contains("I-Spy"));
-        assertTrue(pageAsText.contains("The Royal Tenenbaums"));
-        assertTrue(pageAsText.contains("Zoolander"));
-        assertTrue(pageAsText.contains("Shanghai Noon"));
-    }
-
-    private void clickOnLink(HtmlPage page, String lookFor) throws Exception {
-        DomNodeList<HtmlElement> links = page.getElementsByTagName("a");
-        Iterator<HtmlElement> iterator = links.iterator();
-        while (iterator.hasNext()) {
-            HtmlAnchor anchor = (HtmlAnchor) iterator.next();
-
-            if (lookFor.equals(anchor.getTextContent())) {
-                anchor.click();
-                break;
-            }
-        }
-    }
-
-}
diff --git a/examples/moviefun-old/app/src/test/java/org/superbiz/moviefun/MoviesTest.java b/examples/moviefun-old/app/src/test/java/org/superbiz/moviefun/MoviesTest.java
deleted file mode 100644
index 5ffc3dc..0000000
--- a/examples/moviefun-old/app/src/test/java/org/superbiz/moviefun/MoviesTest.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- * 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.superbiz.moviefun;
-
-import junit.framework.TestCase;
-import org.apache.openejb.api.LocalClient;
-
-import javax.annotation.Resource;
-import javax.ejb.EJB;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.transaction.UserTransaction;
-import java.util.List;
-import java.util.Properties;
-
-@LocalClient
-public class MoviesTest extends TestCase {
-
-    @EJB
-    private Movies movies;
-
-    @Resource
-    private UserTransaction userTransaction;
-
-    @PersistenceContext
-    private EntityManager entityManager;
-
-    public void setUp() throws Exception {
-        Properties p = new Properties();
-        p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
-        p.put("movieDatabase", "new://Resource?type=DataSource");
-        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
-        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
-
-        InitialContext initialContext = new InitialContext(p);
-
-        // Here's the fun part
-        initialContext.bind("inject", this);
-    }
-
-    public void test() throws Exception {
-
-        userTransaction.begin();
-
-        try {
-            entityManager.persist(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
-            entityManager.persist(new Movie("Joel Coen", "Fargo", 1996));
-            entityManager.persist(new Movie("Joel Coen", "The Big Lebowski", 1998));
-
-            List<Movie> list = movies.getMovies();
-            assertEquals("List.size()", 3, list.size());
-
-            for (Movie movie : list) {
-                movies.deleteMovie(movie);
-            }
-
-            assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
-
-        } finally {
-            userTransaction.commit();
-        }
-    }
-}
\ No newline at end of file
diff --git a/examples/moviefun-old/app/src/test/resources/META-INF/application-client.xml b/examples/moviefun-old/app/src/test/resources/META-INF/application-client.xml
deleted file mode 100644
index 1e91dca..0000000
--- a/examples/moviefun-old/app/src/test/resources/META-INF/application-client.xml
+++ /dev/null
@@ -1 +0,0 @@
-<application-client/>
\ No newline at end of file
diff --git a/examples/moviefun-old/iface/pom.xml b/examples/moviefun-old/iface/pom.xml
deleted file mode 100644
index 7c2f173..0000000
--- a/examples/moviefun-old/iface/pom.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 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. -->
-
-<!-- $Rev: 684173 $ $Date: 2008-08-08 20:13:24 -0700 (Fri, 08 Aug 2008) $ -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.superbiz</groupId>
-    <artifactId>moviefun</artifactId>
-    <version>1.1-SNAPSHOT</version>
-  </parent>
-  <groupId>org.superbiz</groupId>
-  <artifactId>moviefun-iface</artifactId>
-  <version>1.1-SNAPSHOT</version>
-  <packaging>jar</packaging>
-  <name>OpenEJB :: Web Examples :: Moviefun :: Interfaces</name>
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.openejb</groupId>
-      <artifactId>javaee-api</artifactId>
-      <version>6.0-4</version>
-      <scope>provided</scope>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <defaultGoal>install</defaultGoal>
-
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-surefire-plugin</artifactId>
-          <version>2.12</version>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>2.4</version>
-        <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-
-  <!-- This section allows you to configure where to publish libraries for
-    sharing. It is not required and may be deleted. For more information see:
-    http://maven.apache.org/plugins/maven-deploy-plugin/ -->
-  <distributionManagement>
-    <repository>
-      <id>localhost</id>
-      <url>file://${basedir}/target/repo/</url>
-    </repository>
-    <snapshotRepository>
-      <id>localhost</id>
-      <url>file://${basedir}/target/snapshot-repo/</url>
-    </snapshotRepository>
-  </distributionManagement>
-
-</project>
-
diff --git a/examples/moviefun-old/iface/src/main/java/org/superbiz/moviefun/Movie.java b/examples/moviefun-old/iface/src/main/java/org/superbiz/moviefun/Movie.java
deleted file mode 100644
index 2bf93f5..0000000
--- a/examples/moviefun-old/iface/src/main/java/org/superbiz/moviefun/Movie.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
- * 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.superbiz.moviefun;
-
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import java.io.Serializable;
-
-@Entity
-public class Movie implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private long id;
-
-    private String director;
-    private String title;
-    private int year;
-    private String genre;
-    private int rating;
-
-
-    public Movie() {
-    }
-
-    public Movie(String title, String director, String genre, int rating, int year) {
-        this.director = director;
-        this.title = title;
-        this.year = year;
-        this.genre = genre;
-        this.rating = rating;
-    }
-
-    public Movie(String director, String title, int year) {
-        this.director = director;
-        this.title = title;
-        this.year = year;
-    }
-
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    public String getDirector() {
-        return director;
-    }
-
-    public void setDirector(String director) {
-        this.director = director;
-    }
-
-    public String getTitle() {
-        return title;
-    }
-
-    public void setTitle(String title) {
-        this.title = title;
-    }
-
-    public int getYear() {
-        return year;
-    }
-
-    public void setYear(int year) {
-        this.year = year;
-    }
-
-    public String getGenre() {
-        return genre;
-    }
-
-    public void setGenre(String genre) {
-        this.genre = genre;
-    }
-
-    public int getRating() {
-        return rating;
-    }
-
-    public void setRating(int rating) {
-        this.rating = rating;
-    }
-}
\ No newline at end of file
diff --git a/examples/moviefun-old/iface/src/main/java/org/superbiz/moviefun/Movies.java b/examples/moviefun-old/iface/src/main/java/org/superbiz/moviefun/Movies.java
deleted file mode 100644
index bbb214b..0000000
--- a/examples/moviefun-old/iface/src/main/java/org/superbiz/moviefun/Movies.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * 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.superbiz.moviefun;
-
-import javax.ejb.Local;
-import java.util.List;
-
-@Local
-public interface Movies {
-    public int count();
-
-    public List<Movie> findRange(int[] range);
-
-    public List<Movie> findByDirector(String director);
-
-    public List<Movie> findByGenre(String genre);
-
-    public List<Movie> findByTitle(String title);
-
-    public List<Movie> getMovies();
-
-    public void deleteMovieId(long id);
-
-    public void deleteMovie(Movie movie);
-
-    public void editMovie(Movie movie);
-
-    public void addMovie(Movie movie);
-
-    public Movie find(Long id);
-}
diff --git a/examples/moviefun-old/iface/src/main/java/org/superbiz/moviefun/MoviesRemote.java b/examples/moviefun-old/iface/src/main/java/org/superbiz/moviefun/MoviesRemote.java
deleted file mode 100644
index 8222498..0000000
--- a/examples/moviefun-old/iface/src/main/java/org/superbiz/moviefun/MoviesRemote.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * 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.superbiz.moviefun;
-
-import javax.ejb.Remote;
-import java.util.List;
-
-@Remote
-public interface MoviesRemote {
-    public int count();
-
-    public List<Movie> findRange(int[] range);
-
-    public List<Movie> findByDirector(String director);
-
-    public List<Movie> findByGenre(String genre);
-
-    public List<Movie> findByTitle(String title);
-
-    public List<Movie> getMovies();
-
-    public void deleteMovieId(long id);
-
-    public void deleteMovie(Movie movie);
-
-    public void editMovie(Movie movie);
-
-    public void addMovie(Movie movie);
-
-    public Movie find(Long id);
-}
diff --git a/examples/moviefun-old/monitor/pom.xml b/examples/moviefun-old/monitor/pom.xml
deleted file mode 100644
index 3af4f32..0000000
--- a/examples/moviefun-old/monitor/pom.xml
+++ /dev/null
@@ -1,213 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 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. -->
-
-<!-- $Rev: 684173 $ $Date: 2008-08-08 20:13:24 -0700 (Fri, 08 Aug 2008) $ -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.superbiz</groupId>
-    <artifactId>moviefun</artifactId>
-    <version>1.1-SNAPSHOT</version>
-  </parent>
-  <groupId>org.superbiz</groupId>
-  <artifactId>moviefun-monitor</artifactId>
-  <version>1.1-SNAPSHOT</version>
-  <packaging>jar</packaging>
-  <name>OpenEJB :: Web Examples :: Moviefun :: Monitor</name>
-  <dependencies>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>4.10</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.openejb</groupId>
-      <artifactId>javaee-api</artifactId>
-      <version>6.0-4</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.openejb</groupId>
-      <artifactId>openejb-api</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.openejb</groupId>
-      <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
-      <exclusions>
-        <exclusion>
-          <artifactId>icu4j</artifactId>
-          <groupId>com.ibm.icu</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>jasypt</artifactId>
-          <groupId>org.jasypt</groupId>
-        </exclusion>
-        <exclusion>
-          <groupId>activesoap</groupId>
-          <artifactId>jaxp-api</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>mx4j</groupId>
-          <artifactId>mx4j</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>mx4j</groupId>
-          <artifactId>mx4j-jmx</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>mx4j</groupId>
-          <artifactId>mx4j-remote</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>mx4j</groupId>
-          <artifactId>mx4j-tools</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>mx4j</groupId>
-          <artifactId>mx4j-impl</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.activemq</groupId>
-          <artifactId>activemq-jaas</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.geronimo.specs</groupId>
-          <artifactId>geronimo-jta_1.0.1B_spec</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.geronimo.specs</groupId>
-          <artifactId>geronimo-jms_1.1_spec</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.geronimo.specs</groupId>
-          <artifactId>geronimo-j2ee-jacc_1.0_spec</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.geronimo.specs</groupId>
-          <artifactId>geronimo-j2ee-management_1.0_spec</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>commons-primitives</groupId>
-          <artifactId>commons-primitives</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.derby</groupId>
-          <artifactId>derby</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>axion</groupId>
-          <artifactId>axion</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>regexp</groupId>
-          <artifactId>regexp</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>activemq</groupId>
-          <artifactId>jmdns</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>xalan</groupId>
-          <artifactId>xalan</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.directory.server</groupId>
-          <artifactId>apacheds-core</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.springframework</groupId>
-          <artifactId>spring</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <defaultGoal>install</defaultGoal>
-
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.12</version>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>2.4</version>
-        <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
-        </configuration>
-      </plugin>
-      <plugin>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <version>2.2-beta-5</version>
-        <executions>
-          <execution>
-            <phase>package</phase>
-            <goals>
-              <goal>attached</goal>
-            </goals>
-          </execution>
-        </executions>
-        <configuration>
-          <appendAssemblyId>false</appendAssemblyId>
-          <descriptors>
-            <descriptor>src/main/assembly/client.xml</descriptor>
-          </descriptors>
-          <archive>
-            <manifest>
-              <mainClass>org.superbiz.moviefun.NotificationMonitor</mainClass>
-            </manifest>
-          </archive>
-        </configuration>
-      </plugin>
-      <plugin>
-        <artifactId>maven-dependency-plugin</artifactId>
-        <version>2.1</version>
-        <executions>
-          <execution>
-            <phase>install</phase>
-            <goals>
-              <goal>copy-dependencies</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>${project.build.directory}/lib</outputDirectory>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-
-
-  <!-- This section allows you to configure where to publish libraries for
-    sharing. It is not required and may be deleted. For more information see:
-    http://maven.apache.org/plugins/maven-deploy-plugin/ -->
-  <distributionManagement>
-    <repository>
-      <id>localhost</id>
-      <url>file://${basedir}/target/repo/</url>
-    </repository>
-    <snapshotRepository>
-      <id>localhost</id>
-      <url>file://${basedir}/target/snapshot-repo/</url>
-    </snapshotRepository>
-  </distributionManagement>
-
-</project>
-
diff --git a/examples/moviefun-old/monitor/src/main/assembly/client.xml b/examples/moviefun-old/monitor/src/main/assembly/client.xml
deleted file mode 100644
index 978de75..0000000
--- a/examples/moviefun-old/monitor/src/main/assembly/client.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
--->
-
-<!-- $Rev: 779454 $ $Date: 2009-05-27 23:54:45 -0700 (Wed, 27 May 2009) $ -->
-
-<assembly>
-  <id>client</id>
-  <formats>
-    <format>jar</format>
-  </formats>
-  <includeBaseDirectory>false</includeBaseDirectory>
-  <fileSets>
-    <fileSet>
-      <directory>${basedir}</directory>
-      <outputDirectory>META-INF</outputDirectory>
-      <includes>
-        <include>README.txt</include>
-      </includes>
-    </fileSet>
-  </fileSets>
-  <dependencySets>
-    <dependencySet>
-      <outputDirectory></outputDirectory>
-      <outputFileNameMapping></outputFileNameMapping>
-
-      <unpack>true</unpack>
-      <!--<includes>-->
-      <!--<include>org.apache.openejb:javaee-api-embedded</include>-->
-      <!--<include>org.apache.xbean:xbean-finder-shaded</include>-->
-      <!--<include>org.apache.xbean:xbean-asm-shaded</include>-->
-      <!--<include>junit:junit</include>-->
-      <!--<include>org.apache.openejb:openejb-itests-beans</include>-->
-      <!--<include>org.apache.openejb:openejb-itests-servlets</include>-->
-      <!--<include>org.apache.openejb:openejb-itests-client</include>-->
-      <!--<include>org.apache.openejb:openejb-client</include>-->
-
-      <!-- ActiveMQ -->
-      <!--<include>org.apache.activemq:activemq-core</include>-->
-      <!--<include>backport-util-concurrent:backport-util-concurrent</include>-->
-      <!--<include>commons-logging:commons-logging</include>-->
-      <!--</includes>-->
-    </dependencySet>
-  </dependencySets>
-</assembly>
-
diff --git a/examples/moviefun-old/monitor/src/main/java/org/superbiz/moviefun/NotificationMonitor.java b/examples/moviefun-old/monitor/src/main/java/org/superbiz/moviefun/NotificationMonitor.java
deleted file mode 100644
index a763f92..0000000
--- a/examples/moviefun-old/monitor/src/main/java/org/superbiz/moviefun/NotificationMonitor.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * 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.superbiz.moviefun;
-
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import java.awt.AWTException;
-import java.awt.Image;
-import java.awt.MenuItem;
-import java.awt.PopupMenu;
-import java.awt.SystemTray;
-import java.awt.Toolkit;
-import java.awt.TrayIcon;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-public class NotificationMonitor {
-    private static TrayIcon trayIcon;
-
-    public static void main(String[] args) throws NamingException, InterruptedException, AWTException, MalformedURLException {
-        addSystemTrayIcon();
-
-        // Boot the embedded EJB Container 
-        new InitialContext();
-
-        System.out.println("Starting monitor...");
-    }
-
-    private static void addSystemTrayIcon() throws AWTException, MalformedURLException {
-        SystemTray tray = SystemTray.getSystemTray();
-
-        URL moviepng = NotificationMonitor.class.getClassLoader().getResource("movie.png");
-        Image image = Toolkit.getDefaultToolkit().getImage(moviepng);
-
-        ActionListener exitListener = new ActionListener() {
-            public void actionPerformed(ActionEvent e) {
-                System.out.println("Exiting monitor...");
-                System.exit(0);
-            }
-        };
-
-        PopupMenu popup = new PopupMenu();
-        MenuItem defaultItem = new MenuItem("Exit");
-        defaultItem.addActionListener(exitListener);
-        popup.add(defaultItem);
-
-        trayIcon = new TrayIcon(image, "Notification Monitor", popup);
-        trayIcon.setImageAutoSize(true);
-        tray.add(trayIcon);
-
-
-    }
-
-    public static void showAlert(String message) {
-        synchronized (trayIcon) {
-            trayIcon.displayMessage("Alert received", message, TrayIcon.MessageType.WARNING);
-        }
-    }
-}
\ No newline at end of file
diff --git a/examples/moviefun-old/monitor/src/main/java/org/superbiz/moviefun/NotificationsBean.java b/examples/moviefun-old/monitor/src/main/java/org/superbiz/moviefun/NotificationsBean.java
deleted file mode 100644
index 5b473de..0000000
--- a/examples/moviefun-old/monitor/src/main/java/org/superbiz/moviefun/NotificationsBean.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.superbiz.moviefun;
-
-import javax.ejb.ActivationConfigProperty;
-import javax.ejb.MessageDriven;
-import javax.jms.JMSException;
-import javax.jms.Message;
-import javax.jms.MessageListener;
-import javax.jms.TextMessage;
-
-@MessageDriven(activationConfig = {
-        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
-        @ActivationConfigProperty(propertyName = "destination", propertyValue = "notifications")})
-public class NotificationsBean implements MessageListener {
-
-    public void onMessage(Message message) {
-        try {
-            TextMessage textMessage = (TextMessage) message;
-            String text = textMessage.getText();
-
-            System.out.println("");
-            System.out.println("====================================");
-            System.out.println("Notification received: " + text);
-            System.out.println("====================================");
-            System.out.println("");
-
-            NotificationMonitor.showAlert(text);
-        } catch (JMSException e) {
-            e.printStackTrace();
-        }
-    }
-}
\ No newline at end of file
diff --git a/examples/moviefun-old/monitor/src/main/resources/META-INF/ejb-jar.xml b/examples/moviefun-old/monitor/src/main/resources/META-INF/ejb-jar.xml
deleted file mode 100644
index 433757b..0000000
--- a/examples/moviefun-old/monitor/src/main/resources/META-INF/ejb-jar.xml
+++ /dev/null
@@ -1 +0,0 @@
-<ejb-jar/>
\ No newline at end of file
diff --git a/examples/moviefun-old/monitor/src/main/resources/jndi.properties b/examples/moviefun-old/monitor/src/main/resources/jndi.properties
deleted file mode 100644
index 1e613c0..0000000
--- a/examples/moviefun-old/monitor/src/main/resources/jndi.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# 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.
-#
-java.naming.factory.initial=org.apache.openejb.core.LocalInitialContextFactory
-Default\ JMS\ Resource\ Adapter=new://Resource?type=ActiveMQResourceAdapter
-Default\ JMS\ Resource\ Adapter.BrokerXmlConfig=broker:vm://localhost
-Default\ JMS\ Resource\ Adapter.ServerUrl=tcp://localhost:61616?waitForStart=20000&async=true
-Default\ JMS\ Resource\ Adapter.StartupTimeout=10000
diff --git a/examples/moviefun-old/monitor/src/main/resources/movie.png b/examples/moviefun-old/monitor/src/main/resources/movie.png
deleted file mode 100644
index fd7cd91..0000000
--- a/examples/moviefun-old/monitor/src/main/resources/movie.png
+++ /dev/null
Binary files differ
diff --git a/examples/moviefun-old/pom.xml b/examples/moviefun-old/pom.xml
deleted file mode 100644
index 9bb8ec5..0000000
--- a/examples/moviefun-old/pom.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 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. -->
-
-<!-- $Rev: 600338 $ $Date: 2007-12-02 09:08:04 -0800 (Sun, 02 Dec 2007) $ -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.superbiz</groupId>
-  <artifactId>moviefun</artifactId>
-  <packaging>pom</packaging>
-  <version>1.1-SNAPSHOT</version>
-  <name>OpenEJB :: Web Examples :: Moviefun</name>
-
-  <modules>
-    <module>iface</module>
-    <module>app</module>
-    <module>monitor</module>
-  </modules>
-  <repositories>
-    <repository>
-      <id>apache-m2-snapshot</id>
-      <name>Apache Snapshot Repository</name>
-      <url>http://repository.apache.org/snapshots</url>
-    </repository>
-  </repositories>
-
-  <!--
-  This section allows you to configure where to publish libraries for sharing.
-  It is not required and may be deleted.  For more information see:
-  http://maven.apache.org/plugins/maven-deploy-plugin/
-  -->
-  <distributionManagement>
-    <repository>
-      <id>localhost</id>
-      <url>file://${basedir}/target/repo/</url>
-    </repository>
-    <snapshotRepository>
-      <id>localhost</id>
-      <url>file://${basedir}/target/snapshot-repo/</url>
-    </snapshotRepository>
-  </distributionManagement>
-
-</project>
diff --git a/examples/moviefun-plus/pom.xml b/examples/moviefun-plus/pom.xml
deleted file mode 100644
index e163392..0000000
--- a/examples/moviefun-plus/pom.xml
+++ /dev/null
@@ -1,133 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 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. -->
-
-<!-- $Rev: 684173 $ $Date: 2008-08-08 20:13:24 -0700 (Fri, 08 Aug 2008) $ -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.superbiz</groupId>
-  <artifactId>moviefun</artifactId>
-  <packaging>war</packaging>
-  <version>1.1-SNAPSHOT</version>
-  <name>OpenEJB :: Web Examples :: Moviefun</name>
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-  </properties>
-  <repositories>
-    <repository>
-      <id>apache-m2-snapshot</id>
-      <name>Apache Snapshot Repository</name>
-      <url>http://repository.apache.org/snapshots</url>
-    </repository>
-  </repositories>
-  <build>
-    <finalName>moviefun</finalName>
-    <defaultGoal>install</defaultGoal>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.12</version>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>2.4</version>
-        <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
-        </configuration>
-      </plugin>
-      <plugin>
-        <artifactId>maven-eclipse-plugin</artifactId>
-        <version>2.8</version>
-        <configuration>
-          <configuration>
-            <wtpapplicationxml>true</wtpapplicationxml>
-            <wtpversion>2.0</wtpversion>
-          </configuration>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.openejb.maven</groupId>
-        <artifactId>tomee-maven-plugin</artifactId>
-        <version>1.0.1-SNAPSHOT</version>
-        <configuration>
-          <tomeeClassifier>plus</tomeeClassifier>
-          <args>-Xmx512m -XX:PermSize=256m</args>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.openejb</groupId>
-      <artifactId>javaee-api</artifactId>
-      <version>6.0-4</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>4.10</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>jstl</artifactId>
-      <version>1.1.2</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.openejb</groupId>
-      <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>taglibs</groupId>
-      <artifactId>standard</artifactId>
-      <version>1.1.2</version>
-    </dependency>
-    <dependency>
-      <groupId>net.sourceforge.htmlunit</groupId>
-      <artifactId>htmlunit</artifactId>
-      <version>2.8</version>
-      <type>jar</type>
-      <scope>test</scope>
-    </dependency>
-   	<dependency>
-      <groupId>org.apache.openejb</groupId>
-      <artifactId>tomee-embedded</artifactId>
-      <version>1.5.1-SNAPSHOT</version>
-      <!--<classifier>uber</classifier>-->
-      <scope>test</scope>
-    </dependency>
-   	<dependency>
-   		<groupId>commons-lang</groupId>
-   		<artifactId>commons-lang</artifactId>
-   		<version>2.4</version>
-   	</dependency>
-  </dependencies>
-  <!-- This section allows you to configure where to publish libraries for 
-    sharing. It is not required and may be deleted. For more information see: 
-    http://maven.apache.org/plugins/maven-deploy-plugin/ -->
-  <distributionManagement>
-    <repository>
-      <id>localhost</id>
-      <url>file://${basedir}/target/repo/</url>
-    </repository>
-    <snapshotRepository>
-      <id>localhost</id>
-      <url>file://${basedir}/target/snapshot-repo/</url>
-    </snapshotRepository>
-  </distributionManagement>
-</project>
diff --git a/examples/moviefun-plus/src/main/java/org/superbiz/moviefun/ActionServlet.java b/examples/moviefun-plus/src/main/java/org/superbiz/moviefun/ActionServlet.java
deleted file mode 100644
index 66596af..0000000
--- a/examples/moviefun-plus/src/main/java/org/superbiz/moviefun/ActionServlet.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/**
- * 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.superbiz.moviefun;
-
-import java.io.IOException;
-import java.util.List;
-
-import javax.ejb.EJB;
-import javax.servlet.ServletException;
-import javax.servlet.annotation.WebServlet;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.lang.StringUtils;
-
-/**
- * @version $Revision$ $Date$
- */
-@WebServlet("/moviefun/*")
-public class ActionServlet extends HttpServlet {
-	private static final long serialVersionUID = -5832176047021911038L;
-
-	public static int PAGE_SIZE = 5;
-
-    @EJB(name = "movies")
-    private MoviesBean moviesBean;
-
-    @Override
-    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-        process(request, response);
-    }
-
-    @Override
-    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-        process(request, response);
-    }
-
-    private void process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-        String action = request.getParameter("action");
-
-        if ("Add".equals(action)) {
-
-            String title = request.getParameter("title");
-            String director = request.getParameter("director");
-            String genre = request.getParameter("genre");
-            int rating = Integer.parseInt(request.getParameter("rating"));
-            int year = Integer.parseInt(request.getParameter("year"));
-
-            Movie movie = new Movie(title, director, genre, rating, year);
-
-            moviesBean.addMovie(movie);
-            response.sendRedirect("moviefun");
-            return;
-
-        } else if ("Remove".equals(action)) {
-
-            String[] ids = request.getParameterValues("id");
-            for (String id : ids) {
-                moviesBean.deleteMovieId(new Long(id));
-            }
-            
-            response.sendRedirect("moviefun");
-            return;
-
-        } else {
-        	String key = request.getParameter("key");
-        	String field = request.getParameter("field");
-        	
-        	int count = 0;
-        	
-        	if (StringUtils.isEmpty(key) || StringUtils.isEmpty(field)) {
-        		count = moviesBean.count();
-        		key = "";
-        		field = "";
-        	} else {
-        		count = moviesBean.count(field, key);
-        	}
-        	
-    		int page = 1;
-    		
-    		try {
-    			page = Integer.parseInt(request.getParameter("page"));
-    		} catch (Exception e) {
-    		}
-    		
-    		int pageCount = (count / PAGE_SIZE);
-    		if (pageCount == 0 || count % PAGE_SIZE != 0) {
-    			pageCount++;
-    		}
-    		
-    		if (page < 1) {
-    			page = 1;
-    		} 
-    		
-    		if (page > pageCount) {
-    			page = pageCount;
-    		}
-    		
-    		int start = (page - 1) * PAGE_SIZE;
-    		List<Movie> range;
-    		
-        	if (StringUtils.isEmpty(key) || StringUtils.isEmpty(field)) {
-        		range = moviesBean.findRange(start, PAGE_SIZE);
-        	} else {
-        		range = moviesBean.findRange(field, key, start, PAGE_SIZE);
-        	}
-
-    		int end = start + range.size();
-    		
-    		request.setAttribute("count", count);
-    		request.setAttribute("start", start + 1);
-    		request.setAttribute("end", end);
-    		request.setAttribute("page", page);
-    		request.setAttribute("pageCount", pageCount);
-    		request.setAttribute("movies", range);
-    		request.setAttribute("key", key);
-    		request.setAttribute("field", field);
-        }
-
-
-        request.getRequestDispatcher("WEB-INF/moviefun.jsp").forward(request, response);
-    }
-
-}
diff --git a/examples/moviefun-plus/src/main/java/org/superbiz/moviefun/Movie.java b/examples/moviefun-plus/src/main/java/org/superbiz/moviefun/Movie.java
deleted file mode 100644
index 2bf93f5..0000000
--- a/examples/moviefun-plus/src/main/java/org/superbiz/moviefun/Movie.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
- * 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.superbiz.moviefun;
-
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import java.io.Serializable;
-
-@Entity
-public class Movie implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private long id;
-
-    private String director;
-    private String title;
-    private int year;
-    private String genre;
-    private int rating;
-
-
-    public Movie() {
-    }
-
-    public Movie(String title, String director, String genre, int rating, int year) {
-        this.director = director;
-        this.title = title;
-        this.year = year;
-        this.genre = genre;
-        this.rating = rating;
-    }
-
-    public Movie(String director, String title, int year) {
-        this.director = director;
-        this.title = title;
-        this.year = year;
-    }
-
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    public String getDirector() {
-        return director;
-    }
-
-    public void setDirector(String director) {
-        this.director = director;
-    }
-
-    public String getTitle() {
-        return title;
-    }
-
-    public void setTitle(String title) {
-        this.title = title;
-    }
-
-    public int getYear() {
-        return year;
-    }
-
-    public void setYear(int year) {
-        this.year = year;
-    }
-
-    public String getGenre() {
-        return genre;
-    }
-
-    public void setGenre(String genre) {
-        this.genre = genre;
-    }
-
-    public int getRating() {
-        return rating;
-    }
-
-    public void setRating(int rating) {
-        this.rating = rating;
-    }
-}
\ No newline at end of file
diff --git a/examples/moviefun-plus/src/main/java/org/superbiz/moviefun/MoviesBean.java b/examples/moviefun-plus/src/main/java/org/superbiz/moviefun/MoviesBean.java
deleted file mode 100644
index 8f80029..0000000
--- a/examples/moviefun-plus/src/main/java/org/superbiz/moviefun/MoviesBean.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/**
- * 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.superbiz.moviefun;
-
-import java.util.List;
-
-import javax.ejb.Stateless;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.TypedQuery;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Path;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import javax.persistence.metamodel.EntityType;
-
-@Stateless(name = "Movies")
-public class MoviesBean {
-
-    @PersistenceContext(unitName = "movie-unit")
-    private EntityManager entityManager;
-
-	public Movie find(Long id) {
-        return entityManager.find(Movie.class, id);
-    }
-
-	public void addMovie(Movie movie) {
-        entityManager.persist(movie);
-    }
-
-	public void editMovie(Movie movie) {
-        entityManager.merge(movie);
-    }
-
-	public void deleteMovie(Movie movie) {
-        entityManager.remove(movie);
-    }
-
-	public void deleteMovieId(long id) {
-        Movie movie = entityManager.find(Movie.class, id);
-        deleteMovie(movie);
-    }
-
-	public List<Movie> getMovies() {
-        CriteriaQuery<Movie> cq = entityManager.getCriteriaBuilder().createQuery(Movie.class);
-        cq.select(cq.from(Movie.class));
-        return entityManager.createQuery(cq).getResultList();
-    }
-
-	public List<Movie> findRange(int firstResult, int maxResults) {
-        CriteriaQuery<Movie> cq = entityManager.getCriteriaBuilder().createQuery(Movie.class);
-        cq.select(cq.from(Movie.class));
-        TypedQuery<Movie> q = entityManager.createQuery(cq);
-        q.setMaxResults(maxResults);
-        q.setFirstResult(firstResult);
-        return q.getResultList();
-    }
-
-	public int count() {
-        CriteriaQuery<Long> cq = entityManager.getCriteriaBuilder().createQuery(Long.class);
-        Root<Movie> rt = cq.from(Movie.class);
-        cq.select(entityManager.getCriteriaBuilder().count(rt));
-        TypedQuery<Long> q = entityManager.createQuery(cq);
-        return (q.getSingleResult()).intValue();
-    }
-	
-	public int count(String field, String searchTerm) {
-		CriteriaBuilder qb = entityManager.getCriteriaBuilder();
-		CriteriaQuery<Long> cq = qb.createQuery(Long.class);
-		Root<Movie> root = cq.from(Movie.class);
-        EntityType<Movie> type = entityManager.getMetamodel().entity(Movie.class);
-
-        Path<String> path = root.get(type.getDeclaredSingularAttribute(field, String.class));
-        Predicate condition = qb.like(path, "%" + searchTerm + "%");
-        
-        cq.select(qb.count(root));
-        cq.where(condition);
-        
-		return entityManager.createQuery(cq).getSingleResult().intValue();
-	}
-	
-	public List<Movie> findRange(String field, String searchTerm, int firstResult, int maxResults) {
-		CriteriaBuilder qb = entityManager.getCriteriaBuilder();
-		CriteriaQuery<Movie> cq = qb.createQuery(Movie.class);
-		Root<Movie> root = cq.from(Movie.class);
-        EntityType<Movie> type = entityManager.getMetamodel().entity(Movie.class);
-
-        Path<String> path = root.get(type.getDeclaredSingularAttribute(field, String.class));
-        Predicate condition = qb.like(path, "%" + searchTerm + "%");
-        
-        cq.where(condition);
-        TypedQuery<Movie> q = entityManager.createQuery(cq);
-        q.setMaxResults(maxResults);
-        q.setFirstResult(firstResult);
-        return q.getResultList();
-    }
-    
-    public void clean() {
-        entityManager.createQuery("delete from Movie").executeUpdate();
-    }
-}
\ No newline at end of file
diff --git a/examples/moviefun-plus/src/main/resources/META-INF/ejb-jar.xml b/examples/moviefun-plus/src/main/resources/META-INF/ejb-jar.xml
deleted file mode 100644
index 783333d..0000000
--- a/examples/moviefun-plus/src/main/resources/META-INF/ejb-jar.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<ejb-jar version="3.1" xmlns="http://java.sun.com/xml/ns/javaee"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd">
-</ejb-jar>
\ No newline at end of file
diff --git a/examples/moviefun-plus/src/main/resources/META-INF/persistence.xml b/examples/moviefun-plus/src/main/resources/META-INF/persistence.xml
deleted file mode 100644
index ec38aaa..0000000
--- a/examples/moviefun-plus/src/main/resources/META-INF/persistence.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
--->
-<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
-             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
-  <persistence-unit name="movie-unit">
-    <jta-data-source>movieDatabase</jta-data-source>
-    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
-    <class>org.superbiz.moviefun.Movie</class>
-
-    <properties>
-      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
-    </properties>
-  </persistence-unit>
-</persistence>
diff --git a/examples/moviefun-plus/src/main/webapp/WEB-INF/moviefun.jsp b/examples/moviefun-plus/src/main/webapp/WEB-INF/moviefun.jsp
deleted file mode 100644
index 4c8931a..0000000
--- a/examples/moviefun-plus/src/main/webapp/WEB-INF/moviefun.jsp
+++ /dev/null
@@ -1,127 +0,0 @@
-<%--
-    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.
---%>
-<%@ page contentType="text/html;charset=UTF-8" language="java"%>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
-<%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c'%>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
-<c:set var="language" value="${pageContext.request.locale}" />
-<fmt:setLocale value="${language}" />
-
-<!DOCTYPE html>
-<html lang="${language}">
-<head>
-<meta charset="utf-8">
-<title>Moviefun</title>
-<meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="description" content="">
-<meta name="author" content="">
-
-<!-- Le styles -->
-<link href="assets/css/bootstrap.css" rel="stylesheet">
-<link href="assets/css/movie.css" rel="stylesheet">
-<style>
-body {
-	padding-top: 60px;
-	/* 60px to make the container go all the way to the bottom of the topbar */
-}
-</style>
-<link href="assets/css/bootstrap-responsive.css" rel="stylesheet">
-
-<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-<!--[if lt IE 9]>
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
-    <![endif]-->
-</head>
-
-<body>
-
-	<div class="navbar navbar-inverse navbar-fixed-top">
-		<div class="navbar-inner">
-			<div class="container">
-				<a class="btn btn-navbar" data-toggle="collapse"
-					data-target=".nav-collapse"> <span class="icon-bar"></span> <span
-					class="icon-bar"></span> <span class="icon-bar"></span>
-				</a> <a class="brand" href="#">Moviefun</a>
-
-				<form class="navbar-form pull-right">
-					<select name="field">
-						<option value="title">Title</option>
-						<option value="director">Director</option>
-						<option value="genre">Genre</option>
-					</select> <input type="text" name="key" size="20">
-					<button type="submit" class="btn">Search</button>
-				</form>
-
-				<!--/.nav-collapse -->
-			</div>
-		</div>
-	</div>
-
-	<div class="container">
-
-		<h1>Moviefun</h1>
-
-		<form class="movie-input-form form-inline" action="moviefun"
-			method="post">
-			<p>Add Movie</p>
-			<input type="text" name="title" placeholder="Title" size="29" /> <input
-				type="text" name="director" placeholder="Director" size="17" /> <input
-				type="text" name="genre" placeholder="Genre" size="14" /> <input
-				type="text" name="rating" placeholder="Rating" size="7" /> <input
-				type="text" name="year" placeholder="Year" size="4"
-				style="width: 110px;" /> <input type="submit" name="action"
-				class="btn btn-primary" value="Add" />
-		</form>
-
-		<table class="table table-striped table-bordered">
-			<thead>
-				<tr>
-					<th>Title</th>
-					<th>Director</th>
-					<th>Genre</th>
-					<th>Rating</th>
-					<th>Year</th>
-					<th>&nbsp;</th>
-				</tr>
-			</thead>
-			<tbody>
-				<c:forEach items="${movies}" var="movie">
-					<tr>
-						<td><c:out value="${movie.title}" /></td>
-						<td><c:out value="${movie.director}" /></td>
-						<td><c:out value="${movie.genre}" /></td>
-						<td><c:out value="${movie.rating}" /></td>
-						<td><c:out value="${movie.year}" /></td>
-						<td><a href="?action=Remove&id=${movie.id}"><i
-								class="icon-trash"></i></a></td>
-					</tr>
-				</c:forEach>
-			</tbody>
-		</table>
-		<c:if test="${count > 0}">
-			<c:if test="${page > 1}">
-				<a href="<c:url value="moviefun"><c:param name="page" value="${page - 1}"/><c:param name="field" value="${field}"/><c:param name="key" value="${key}"/></c:url>">&lt; Prev</a>&nbsp;
-			</c:if>
-			Showing records ${start} to ${end} of ${count}
-			<c:if test="${page < pageCount}">
-				&nbsp;<a href="<c:url value="moviefun"><c:param name="page" value="${page + 1}"/><c:param name="field" value="${field}"/><c:param name="key" value="${key}"/></c:url>">Next &gt;</a>
-			</c:if>
-		</c:if>
-	</div>
-	<!-- /container -->
-</body>
-</html>
diff --git a/examples/moviefun-plus/src/main/webapp/WEB-INF/web.xml b/examples/moviefun-plus/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index 25cb9e4..0000000
--- a/examples/moviefun-plus/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
--->
-<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
-  <welcome-file-list>
-    <welcome-file>index.jsp</welcome-file>
-  </welcome-file-list>
-</web-app>
diff --git a/examples/moviefun-plus/src/main/webapp/assets/css/bootstrap-responsive.css b/examples/moviefun-plus/src/main/webapp/assets/css/bootstrap-responsive.css
deleted file mode 100644
index 9259d26..0000000
--- a/examples/moviefun-plus/src/main/webapp/assets/css/bootstrap-responsive.css
+++ /dev/null
@@ -1,1058 +0,0 @@
-/*!
- * Bootstrap Responsive v2.1.1
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- */
-
-.clearfix {
-  *zoom: 1;
-}
-
-.clearfix:before,
-.clearfix:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.clearfix:after {
-  clear: both;
-}
-
-.hide-text {
-  font: 0/0 a;
-  color: transparent;
-  text-shadow: none;
-  background-color: transparent;
-  border: 0;
-}
-
-.input-block-level {
-  display: block;
-  width: 100%;
-  min-height: 30px;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.hidden {
-  display: none;
-  visibility: hidden;
-}
-
-.visible-phone {
-  display: none !important;
-}
-
-.visible-tablet {
-  display: none !important;
-}
-
-.hidden-desktop {
-  display: none !important;
-}
-
-.visible-desktop {
-  display: inherit !important;
-}
-
-@media (min-width: 768px) and (max-width: 979px) {
-  .hidden-desktop {
-    display: inherit !important;
-  }
-  .visible-desktop {
-    display: none !important ;
-  }
-  .visible-tablet {
-    display: inherit !important;
-  }
-  .hidden-tablet {
-    display: none !important;
-  }
-}
-
-@media (max-width: 767px) {
-  .hidden-desktop {
-    display: inherit !important;
-  }
-  .visible-desktop {
-    display: none !important;
-  }
-  .visible-phone {
-    display: inherit !important;
-  }
-  .hidden-phone {
-    display: none !important;
-  }
-}
-
-@media (min-width: 1200px) {
-  .row {
-    margin-left: -30px;
-    *zoom: 1;
-  }
-  .row:before,
-  .row:after {
-    display: table;
-    line-height: 0;
-    content: "";
-  }
-  .row:after {
-    clear: both;
-  }
-  [class*="span"] {
-    float: left;
-    min-height: 1px;
-    margin-left: 30px;
-  }
-  .container,
-  .navbar-static-top .container,
-  .navbar-fixed-top .container,
-  .navbar-fixed-bottom .container {
-    width: 1170px;
-  }
-  .span12 {
-    width: 1170px;
-  }
-  .span11 {
-    width: 1070px;
-  }
-  .span10 {
-    width: 970px;
-  }
-  .span9 {
-    width: 870px;
-  }
-  .span8 {
-    width: 770px;
-  }
-  .span7 {
-    width: 670px;
-  }
-  .span6 {
-    width: 570px;
-  }
-  .span5 {
-    width: 470px;
-  }
-  .span4 {
-    width: 370px;
-  }
-  .span3 {
-    width: 270px;
-  }
-  .span2 {
-    width: 170px;
-  }
-  .span1 {
-    width: 70px;
-  }
-  .offset12 {
-    margin-left: 1230px;
-  }
-  .offset11 {
-    margin-left: 1130px;
-  }
-  .offset10 {
-    margin-left: 1030px;
-  }
-  .offset9 {
-    margin-left: 930px;
-  }
-  .offset8 {
-    margin-left: 830px;
-  }
-  .offset7 {
-    margin-left: 730px;
-  }
-  .offset6 {
-    margin-left: 630px;
-  }
-  .offset5 {
-    margin-left: 530px;
-  }
-  .offset4 {
-    margin-left: 430px;
-  }
-  .offset3 {
-    margin-left: 330px;
-  }
-  .offset2 {
-    margin-left: 230px;
-  }
-  .offset1 {
-    margin-left: 130px;
-  }
-  .row-fluid {
-    width: 100%;
-    *zoom: 1;
-  }
-  .row-fluid:before,
-  .row-fluid:after {
-    display: table;
-    line-height: 0;
-    content: "";
-  }
-  .row-fluid:after {
-    clear: both;
-  }
-  .row-fluid [class*="span"] {
-    display: block;
-    float: left;
-    width: 100%;
-    min-height: 30px;
-    margin-left: 2.564102564102564%;
-    *margin-left: 2.5109110747408616%;
-    -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-            box-sizing: border-box;
-  }
-  .row-fluid [class*="span"]:first-child {
-    margin-left: 0;
-  }
-  .row-fluid .span12 {
-    width: 100%;
-    *width: 99.94680851063829%;
-  }
-  .row-fluid .span11 {
-    width: 91.45299145299145%;
-    *width: 91.39979996362975%;
-  }
-  .row-fluid .span10 {
-    width: 82.90598290598291%;
-    *width: 82.8527914166212%;
-  }
-  .row-fluid .span9 {
-    width: 74.35897435897436%;
-    *width: 74.30578286961266%;
-  }
-  .row-fluid .span8 {
-    width: 65.81196581196582%;
-    *width: 65.75877432260411%;
-  }
-  .row-fluid .span7 {
-    width: 57.26495726495726%;
-    *width: 57.21176577559556%;
-  }
-  .row-fluid .span6 {
-    width: 48.717948717948715%;
-    *width: 48.664757228587014%;
-  }
-  .row-fluid .span5 {
-    width: 40.17094017094017%;
-    *width: 40.11774868157847%;
-  }
-  .row-fluid .span4 {
-    width: 31.623931623931625%;
-    *width: 31.570740134569924%;
-  }
-  .row-fluid .span3 {
-    width: 23.076923076923077%;
-    *width: 23.023731587561375%;
-  }
-  .row-fluid .span2 {
-    width: 14.52991452991453%;
-    *width: 14.476723040552828%;
-  }
-  .row-fluid .span1 {
-    width: 5.982905982905983%;
-    *width: 5.929714493544281%;
-  }
-  .row-fluid .offset12 {
-    margin-left: 105.12820512820512%;
-    *margin-left: 105.02182214948171%;
-  }
-  .row-fluid .offset12:first-child {
-    margin-left: 102.56410256410257%;
-    *margin-left: 102.45771958537915%;
-  }
-  .row-fluid .offset11 {
-    margin-left: 96.58119658119658%;
-    *margin-left: 96.47481360247316%;
-  }
-  .row-fluid .offset11:first-child {
-    margin-left: 94.01709401709402%;
-    *margin-left: 93.91071103837061%;
-  }
-  .row-fluid .offset10 {
-    margin-left: 88.03418803418803%;
-    *margin-left: 87.92780505546462%;
-  }
-  .row-fluid .offset10:first-child {
-    margin-left: 85.47008547008548%;
-    *margin-left: 85.36370249136206%;
-  }
-  .row-fluid .offset9 {
-    margin-left: 79.48717948717949%;
-    *margin-left: 79.38079650845607%;
-  }
-  .row-fluid .offset9:first-child {
-    margin-left: 76.92307692307693%;
-    *margin-left: 76.81669394435352%;
-  }
-  .row-fluid .offset8 {
-    margin-left: 70.94017094017094%;
-    *margin-left: 70.83378796144753%;
-  }
-  .row-fluid .offset8:first-child {
-    margin-left: 68.37606837606839%;
-    *margin-left: 68.26968539734497%;
-  }
-  .row-fluid .offset7 {
-    margin-left: 62.393162393162385%;
-    *margin-left: 62.28677941443899%;
-  }
-  .row-fluid .offset7:first-child {
-    margin-left: 59.82905982905982%;
-    *margin-left: 59.72267685033642%;
-  }
-  .row-fluid .offset6 {
-    margin-left: 53.84615384615384%;
-    *margin-left: 53.739770867430444%;
-  }
-  .row-fluid .offset6:first-child {
-    margin-left: 51.28205128205128%;
-    *margin-left: 51.175668303327875%;
-  }
-  .row-fluid .offset5 {
-    margin-left: 45.299145299145295%;
-    *margin-left: 45.1927623204219%;
-  }
-  .row-fluid .offset5:first-child {
-    margin-left: 42.73504273504273%;
-    *margin-left: 42.62865975631933%;
-  }
-  .row-fluid .offset4 {
-    margin-left: 36.75213675213675%;
-    *margin-left: 36.645753773413354%;
-  }
-  .row-fluid .offset4:first-child {
-    margin-left: 34.18803418803419%;
-    *margin-left: 34.081651209310785%;
-  }
-  .row-fluid .offset3 {
-    margin-left: 28.205128205128204%;
-    *margin-left: 28.0987452264048%;
-  }
-  .row-fluid .offset3:first-child {
-    margin-left: 25.641025641025642%;
-    *margin-left: 25.53464266230224%;
-  }
-  .row-fluid .offset2 {
-    margin-left: 19.65811965811966%;
-    *margin-left: 19.551736679396257%;
-  }
-  .row-fluid .offset2:first-child {
-    margin-left: 17.094017094017094%;
-    *margin-left: 16.98763411529369%;
-  }
-  .row-fluid .offset1 {
-    margin-left: 11.11111111111111%;
-    *margin-left: 11.004728132387708%;
-  }
-  .row-fluid .offset1:first-child {
-    margin-left: 8.547008547008547%;
-    *margin-left: 8.440625568285142%;
-  }
-  input,
-  textarea,
-  .uneditable-input {
-    margin-left: 0;
-  }
-  .controls-row [class*="span"] + [class*="span"] {
-    margin-left: 30px;
-  }
-  input.span12,
-  textarea.span12,
-  .uneditable-input.span12 {
-    width: 1156px;
-  }
-  input.span11,
-  textarea.span11,
-  .uneditable-input.span11 {
-    width: 1056px;
-  }
-  input.span10,
-  textarea.span10,
-  .uneditable-input.span10 {
-    width: 956px;
-  }
-  input.span9,
-  textarea.span9,
-  .uneditable-input.span9 {
-    width: 856px;
-  }
-  input.span8,
-  textarea.span8,
-  .uneditable-input.span8 {
-    width: 756px;
-  }
-  input.span7,
-  textarea.span7,
-  .uneditable-input.span7 {
-    width: 656px;
-  }
-  input.span6,
-  textarea.span6,
-  .uneditable-input.span6 {
-    width: 556px;
-  }
-  input.span5,
-  textarea.span5,
-  .uneditable-input.span5 {
-    width: 456px;
-  }
-  input.span4,
-  textarea.span4,
-  .uneditable-input.span4 {
-    width: 356px;
-  }
-  input.span3,
-  textarea.span3,
-  .uneditable-input.span3 {
-    width: 256px;
-  }
-  input.span2,
-  textarea.span2,
-  .uneditable-input.span2 {
-    width: 156px;
-  }
-  input.span1,
-  textarea.span1,
-  .uneditable-input.span1 {
-    width: 56px;
-  }
-  .thumbnails {
-    margin-left: -30px;
-  }
-  .thumbnails > li {
-    margin-left: 30px;
-  }
-  .row-fluid .thumbnails {
-    margin-left: 0;
-  }
-}
-
-@media (min-width: 768px) and (max-width: 979px) {
-  .row {
-    margin-left: -20px;
-    *zoom: 1;
-  }
-  .row:before,
-  .row:after {
-    display: table;
-    line-height: 0;
-    content: "";
-  }
-  .row:after {
-    clear: both;
-  }
-  [class*="span"] {
-    float: left;
-    min-height: 1px;
-    margin-left: 20px;
-  }
-  .container,
-  .navbar-static-top .container,
-  .navbar-fixed-top .container,
-  .navbar-fixed-bottom .container {
-    width: 724px;
-  }
-  .span12 {
-    width: 724px;
-  }
-  .span11 {
-    width: 662px;
-  }
-  .span10 {
-    width: 600px;
-  }
-  .span9 {
-    width: 538px;
-  }
-  .span8 {
-    width: 476px;
-  }
-  .span7 {
-    width: 414px;
-  }
-  .span6 {
-    width: 352px;
-  }
-  .span5 {
-    width: 290px;
-  }
-  .span4 {
-    width: 228px;
-  }
-  .span3 {
-    width: 166px;
-  }
-  .span2 {
-    width: 104px;
-  }
-  .span1 {
-    width: 42px;
-  }
-  .offset12 {
-    margin-left: 764px;
-  }
-  .offset11 {
-    margin-left: 702px;
-  }
-  .offset10 {
-    margin-left: 640px;
-  }
-  .offset9 {
-    margin-left: 578px;
-  }
-  .offset8 {
-    margin-left: 516px;
-  }
-  .offset7 {
-    margin-left: 454px;
-  }
-  .offset6 {
-    margin-left: 392px;
-  }
-  .offset5 {
-    margin-left: 330px;
-  }
-  .offset4 {
-    margin-left: 268px;
-  }
-  .offset3 {
-    margin-left: 206px;
-  }
-  .offset2 {
-    margin-left: 144px;
-  }
-  .offset1 {
-    margin-left: 82px;
-  }
-  .row-fluid {
-    width: 100%;
-    *zoom: 1;
-  }
-  .row-fluid:before,
-  .row-fluid:after {
-    display: table;
-    line-height: 0;
-    content: "";
-  }
-  .row-fluid:after {
-    clear: both;
-  }
-  .row-fluid [class*="span"] {
-    display: block;
-    float: left;
-    width: 100%;
-    min-height: 30px;
-    margin-left: 2.7624309392265194%;
-    *margin-left: 2.709239449864817%;
-    -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-            box-sizing: border-box;
-  }
-  .row-fluid [class*="span"]:first-child {
-    margin-left: 0;
-  }
-  .row-fluid .span12 {
-    width: 100%;
-    *width: 99.94680851063829%;
-  }
-  .row-fluid .span11 {
-    width: 91.43646408839778%;
-    *width: 91.38327259903608%;
-  }
-  .row-fluid .span10 {
-    width: 82.87292817679558%;
-    *width: 82.81973668743387%;
-  }
-  .row-fluid .span9 {
-    width: 74.30939226519337%;
-    *width: 74.25620077583166%;
-  }
-  .row-fluid .span8 {
-    width: 65.74585635359117%;
-    *width: 65.69266486422946%;
-  }
-  .row-fluid .span7 {
-    width: 57.18232044198895%;
-    *width: 57.12912895262725%;
-  }
-  .row-fluid .span6 {
-    width: 48.61878453038674%;
-    *width: 48.56559304102504%;
-  }
-  .row-fluid .span5 {
-    width: 40.05524861878453%;
-    *width: 40.00205712942283%;
-  }
-  .row-fluid .span4 {
-    width: 31.491712707182323%;
-    *width: 31.43852121782062%;
-  }
-  .row-fluid .span3 {
-    width: 22.92817679558011%;
-    *width: 22.87498530621841%;
-  }
-  .row-fluid .span2 {
-    width: 14.3646408839779%;
-    *width: 14.311449394616199%;
-  }
-  .row-fluid .span1 {
-    width: 5.801104972375691%;
-    *width: 5.747913483013988%;
-  }
-  .row-fluid .offset12 {
-    margin-left: 105.52486187845304%;
-    *margin-left: 105.41847889972962%;
-  }
-  .row-fluid .offset12:first-child {
-    margin-left: 102.76243093922652%;
-    *margin-left: 102.6560479605031%;
-  }
-  .row-fluid .offset11 {
-    margin-left: 96.96132596685082%;
-    *margin-left: 96.8549429881274%;
-  }
-  .row-fluid .offset11:first-child {
-    margin-left: 94.1988950276243%;
-    *margin-left: 94.09251204890089%;
-  }
-  .row-fluid .offset10 {
-    margin-left: 88.39779005524862%;
-    *margin-left: 88.2914070765252%;
-  }
-  .row-fluid .offset10:first-child {
-    margin-left: 85.6353591160221%;
-    *margin-left: 85.52897613729868%;
-  }
-  .row-fluid .offset9 {
-    margin-left: 79.8342541436464%;
-    *margin-left: 79.72787116492299%;
-  }
-  .row-fluid .offset9:first-child {
-    margin-left: 77.07182320441989%;
-    *margin-left: 76.96544022569647%;
-  }
-  .row-fluid .offset8 {
-    margin-left: 71.2707182320442%;
-    *margin-left: 71.16433525332079%;
-  }
-  .row-fluid .offset8:first-child {
-    margin-left: 68.50828729281768%;
-    *margin-left: 68.40190431409427%;
-  }
-  .row-fluid .offset7 {
-    margin-left: 62.70718232044199%;
-    *margin-left: 62.600799341718584%;
-  }
-  .row-fluid .offset7:first-child {
-    margin-left: 59.94475138121547%;
-    *margin-left: 59.838368402492065%;
-  }
-  .row-fluid .offset6 {
-    margin-left: 54.14364640883978%;
-    *margin-left: 54.037263430116376%;
-  }
-  .row-fluid .offset6:first-child {
-    margin-left: 51.38121546961326%;
-    *margin-left: 51.27483249088986%;
-  }
-  .row-fluid .offset5 {
-    margin-left: 45.58011049723757%;
-    *margin-left: 45.47372751851417%;
-  }
-  .row-fluid .offset5:first-child {
-    margin-left: 42.81767955801105%;
-    *margin-left: 42.71129657928765%;
-  }
-  .row-fluid .offset4 {
-    margin-left: 37.01657458563536%;
-    *margin-left: 36.91019160691196%;
-  }
-  .row-fluid .offset4:first-child {
-    margin-left: 34.25414364640884%;
-    *margin-left: 34.14776066768544%;
-  }
-  .row-fluid .offset3 {
-    margin-left: 28.45303867403315%;
-    *margin-left: 28.346655695309746%;
-  }
-  .row-fluid .offset3:first-child {
-    margin-left: 25.69060773480663%;
-    *margin-left: 25.584224756083227%;
-  }
-  .row-fluid .offset2 {
-    margin-left: 19.88950276243094%;
-    *margin-left: 19.783119783707537%;
-  }
-  .row-fluid .offset2:first-child {
-    margin-left: 17.12707182320442%;
-    *margin-left: 17.02068884448102%;
-  }
-  .row-fluid .offset1 {
-    margin-left: 11.32596685082873%;
-    *margin-left: 11.219583872105325%;
-  }
-  .row-fluid .offset1:first-child {
-    margin-left: 8.56353591160221%;
-    *margin-left: 8.457152932878806%;
-  }
-  input,
-  textarea,
-  .uneditable-input {
-    margin-left: 0;
-  }
-  .controls-row [class*="span"] + [class*="span"] {
-    margin-left: 20px;
-  }
-  input.span12,
-  textarea.span12,
-  .uneditable-input.span12 {
-    width: 710px;
-  }
-  input.span11,
-  textarea.span11,
-  .uneditable-input.span11 {
-    width: 648px;
-  }
-  input.span10,
-  textarea.span10,
-  .uneditable-input.span10 {
-    width: 586px;
-  }
-  input.span9,
-  textarea.span9,
-  .uneditable-input.span9 {
-    width: 524px;
-  }
-  input.span8,
-  textarea.span8,
-  .uneditable-input.span8 {
-    width: 462px;
-  }
-  input.span7,
-  textarea.span7,
-  .uneditable-input.span7 {
-    width: 400px;
-  }
-  input.span6,
-  textarea.span6,
-  .uneditable-input.span6 {
-    width: 338px;
-  }
-  input.span5,
-  textarea.span5,
-  .uneditable-input.span5 {
-    width: 276px;
-  }
-  input.span4,
-  textarea.span4,
-  .uneditable-input.span4 {
-    width: 214px;
-  }
-  input.span3,
-  textarea.span3,
-  .uneditable-input.span3 {
-    width: 152px;
-  }
-  input.span2,
-  textarea.span2,
-  .uneditable-input.span2 {
-    width: 90px;
-  }
-  input.span1,
-  textarea.span1,
-  .uneditable-input.span1 {
-    width: 28px;
-  }
-}
-
-@media (max-width: 767px) {
-  body {
-    padding-right: 20px;
-    padding-left: 20px;
-  }
-  .navbar-fixed-top,
-  .navbar-fixed-bottom,
-  .navbar-static-top {
-    margin-right: -20px;
-    margin-left: -20px;
-  }
-  .container-fluid {
-    padding: 0;
-  }
-  .dl-horizontal dt {
-    float: none;
-    width: auto;
-    clear: none;
-    text-align: left;
-  }
-  .dl-horizontal dd {
-    margin-left: 0;
-  }
-  .container {
-    width: auto;
-  }
-  .row-fluid {
-    width: 100%;
-  }
-  .row,
-  .thumbnails {
-    margin-left: 0;
-  }
-  .thumbnails > li {
-    float: none;
-    margin-left: 0;
-  }
-  [class*="span"],
-  .row-fluid [class*="span"] {
-    display: block;
-    float: none;
-    width: 100%;
-    margin-left: 0;
-    -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-            box-sizing: border-box;
-  }
-  .span12,
-  .row-fluid .span12 {
-    width: 100%;
-    -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-            box-sizing: border-box;
-  }
-  .input-large,
-  .input-xlarge,
-  .input-xxlarge,
-  input[class*="span"],
-  select[class*="span"],
-  textarea[class*="span"],
-  .uneditable-input {
-    display: block;
-    width: 100%;
-    min-height: 30px;
-    -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-            box-sizing: border-box;
-  }
-  .input-prepend input,
-  .input-append input,
-  .input-prepend input[class*="span"],
-  .input-append input[class*="span"] {
-    display: inline-block;
-    width: auto;
-  }
-  .controls-row [class*="span"] + [class*="span"] {
-    margin-left: 0;
-  }
-  .modal {
-    position: fixed;
-    top: 20px;
-    right: 20px;
-    left: 20px;
-    width: auto;
-    margin: 0;
-  }
-  .modal.fade.in {
-    top: auto;
-  }
-}
-
-@media (max-width: 480px) {
-  .nav-collapse {
-    -webkit-transform: translate3d(0, 0, 0);
-  }
-  .page-header h1 small {
-    display: block;
-    line-height: 20px;
-  }
-  input[type="checkbox"],
-  input[type="radio"] {
-    border: 1px solid #ccc;
-  }
-  .form-horizontal .control-label {
-    float: none;
-    width: auto;
-    padding-top: 0;
-    text-align: left;
-  }
-  .form-horizontal .controls {
-    margin-left: 0;
-  }
-  .form-horizontal .control-list {
-    padding-top: 0;
-  }
-  .form-horizontal .form-actions {
-    padding-right: 10px;
-    padding-left: 10px;
-  }
-  .modal {
-    top: 10px;
-    right: 10px;
-    left: 10px;
-  }
-  .modal-header .close {
-    padding: 10px;
-    margin: -10px;
-  }
-  .carousel-caption {
-    position: static;
-  }
-}
-
-@media (max-width: 979px) {
-  body {
-    padding-top: 0;
-  }
-  .navbar-fixed-top,
-  .navbar-fixed-bottom {
-    position: static;
-  }
-  .navbar-fixed-top {
-    margin-bottom: 20px;
-  }
-  .navbar-fixed-bottom {
-    margin-top: 20px;
-  }
-  .navbar-fixed-top .navbar-inner,
-  .navbar-fixed-bottom .navbar-inner {
-    padding: 5px;
-  }
-  .navbar .container {
-    width: auto;
-    padding: 0;
-  }
-  .navbar .brand {
-    padding-right: 10px;
-    padding-left: 10px;
-    margin: 0 0 0 -5px;
-  }
-  .nav-collapse {
-    clear: both;
-  }
-  .nav-collapse .nav {
-    float: none;
-    margin: 0 0 10px;
-  }
-  .nav-collapse .nav > li {
-    float: none;
-  }
-  .nav-collapse .nav > li > a {
-    margin-bottom: 2px;
-  }
-  .nav-collapse .nav > .divider-vertical {
-    display: none;
-  }
-  .nav-collapse .nav .nav-header {
-    color: #777777;
-    text-shadow: none;
-  }
-  .nav-collapse .nav > li > a,
-  .nav-collapse .dropdown-menu a {
-    padding: 9px 15px;
-    font-weight: bold;
-    color: #777777;
-    -webkit-border-radius: 3px;
-       -moz-border-radius: 3px;
-            border-radius: 3px;
-  }
-  .nav-collapse .btn {
-    padding: 4px 10px 4px;
-    font-weight: normal;
-    -webkit-border-radius: 4px;
-       -moz-border-radius: 4px;
-            border-radius: 4px;
-  }
-  .nav-collapse .dropdown-menu li + li a {
-    margin-bottom: 2px;
-  }
-  .nav-collapse .nav > li > a:hover,
-  .nav-collapse .dropdown-menu a:hover {
-    background-color: #f2f2f2;
-  }
-  .navbar-inverse .nav-collapse .nav > li > a:hover,
-  .navbar-inverse .nav-collapse .dropdown-menu a:hover {
-    background-color: #111111;
-  }
-  .nav-collapse.in .btn-group {
-    padding: 0;
-    margin-top: 5px;
-  }
-  .nav-collapse .dropdown-menu {
-    position: static;
-    top: auto;
-    left: auto;
-    display: block;
-    float: none;
-    max-width: none;
-    padding: 0;
-    margin: 0 15px;
-    background-color: transparent;
-    border: none;
-    -webkit-border-radius: 0;
-       -moz-border-radius: 0;
-            border-radius: 0;
-    -webkit-box-shadow: none;
-       -moz-box-shadow: none;
-            box-shadow: none;
-  }
-  .nav-collapse .dropdown-menu:before,
-  .nav-collapse .dropdown-menu:after {
-    display: none;
-  }
-  .nav-collapse .dropdown-menu .divider {
-    display: none;
-  }
-  .nav-collapse .nav > li > .dropdown-menu:before,
-  .nav-collapse .nav > li > .dropdown-menu:after {
-    display: none;
-  }
-  .nav-collapse .navbar-form,
-  .nav-collapse .navbar-search {
-    float: none;
-    padding: 10px 15px;
-    margin: 10px 0;
-    border-top: 1px solid #f2f2f2;
-    border-bottom: 1px solid #f2f2f2;
-    -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
-       -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
-            box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
-  }
-  .navbar-inverse .nav-collapse .navbar-form,
-  .navbar-inverse .nav-collapse .navbar-search {
-    border-top-color: #111111;
-    border-bottom-color: #111111;
-  }
-  .navbar .nav-collapse .nav.pull-right {
-    float: none;
-    margin-left: 0;
-  }
-  .nav-collapse,
-  .nav-collapse.collapse {
-    height: 0;
-    overflow: hidden;
-  }
-  .navbar .btn-navbar {
-    display: block;
-  }
-  .navbar-static .navbar-inner {
-    padding-right: 10px;
-    padding-left: 10px;
-  }
-}
-
-@media (min-width: 980px) {
-  .nav-collapse.collapse {
-    height: auto !important;
-    overflow: visible !important;
-  }
-}
diff --git a/examples/moviefun-plus/src/main/webapp/assets/css/bootstrap-responsive.min.css b/examples/moviefun-plus/src/main/webapp/assets/css/bootstrap-responsive.min.css
deleted file mode 100644
index 7b0158d..0000000
--- a/examples/moviefun-plus/src/main/webapp/assets/css/bootstrap-responsive.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * Bootstrap Responsive v2.1.1
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.hidden{display:none;visibility:hidden}.visible-phone{display:none!important}.visible-tablet{display:none!important}.hidden-desktop{display:none!important}.visible-desktop{display:inherit!important}@media(min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}}@media(max-width:767px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-phone{display:inherit!important}.hidden-phone{display:none!important}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:30px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%}.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%}.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%}.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%}.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%}.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%}.row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%}.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%}.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%}.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%}.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%}.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%}.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%}.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%}.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%}.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%}.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%}.row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%}.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%}.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%}.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%}.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%}.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%}.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%}.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%}.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%}.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%}.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%}.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%}.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%}.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:30px}input.span12,textarea.span12,.uneditable-input.span12{width:1156px}input.span11,textarea.span11,.uneditable-input.span11{width:1056px}input.span10,textarea.span10,.uneditable-input.span10{width:956px}input.span9,textarea.span9,.uneditable-input.span9{width:856px}input.span8,textarea.span8,.uneditable-input.span8{width:756px}input.span7,textarea.span7,.uneditable-input.span7{width:656px}input.span6,textarea.span6,.uneditable-input.span6{width:556px}input.span5,textarea.span5,.uneditable-input.span5{width:456px}input.span4,textarea.span4,.uneditable-input.span4{width:356px}input.span3,textarea.span3,.uneditable-input.span3{width:256px}input.span2,textarea.span2,.uneditable-input.span2{width:156px}input.span1,textarea.span1,.uneditable-input.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%}.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%}.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%}.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%}.row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%}.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%}.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%}.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%}.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%}.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%}.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%}.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%}.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%}.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%}.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%}.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%}.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%}.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%}.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%}.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%}.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%}.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%}.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%}.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%}.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%}.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%}.row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%}.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%}.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%}.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%}.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:710px}input.span11,textarea.span11,.uneditable-input.span11{width:648px}input.span10,textarea.span10,.uneditable-input.span10{width:586px}input.span9,textarea.span9,.uneditable-input.span9{width:524px}input.span8,textarea.span8,.uneditable-input.span8{width:462px}input.span7,textarea.span7,.uneditable-input.span7{width:400px}input.span6,textarea.span6,.uneditable-input.span6{width:338px}input.span5,textarea.span5,.uneditable-input.span5{width:276px}input.span4,textarea.span4,.uneditable-input.span4{width:214px}input.span3,textarea.span3,.uneditable-input.span3{width:152px}input.span2,textarea.span2,.uneditable-input.span2{width:90px}input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}.controls-row [class*="span"]+[class*="span"]{margin-left:0}.modal{position:fixed;top:20px;right:20px;left:20px;width:auto;margin:0}.modal.fade.in{top:auto}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:20px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .dropdown-menu a:hover{background-color:#f2f2f2}.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:hover{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:block;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}}
diff --git a/examples/moviefun-plus/src/main/webapp/assets/css/bootstrap.css b/examples/moviefun-plus/src/main/webapp/assets/css/bootstrap.css
deleted file mode 100644
index 9fa6f76..0000000
--- a/examples/moviefun-plus/src/main/webapp/assets/css/bootstrap.css
+++ /dev/null
@@ -1,5774 +0,0 @@
-/*!
- * Bootstrap v2.1.1
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- */
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-nav,
-section {
-  display: block;
-}
-
-audio,
-canvas,
-video {
-  display: inline-block;
-  *display: inline;
-  *zoom: 1;
-}
-
-audio:not([controls]) {
-  display: none;
-}
-
-html {
-  font-size: 100%;
-  -webkit-text-size-adjust: 100%;
-      -ms-text-size-adjust: 100%;
-}
-
-a:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-
-a:hover,
-a:active {
-  outline: 0;
-}
-
-sub,
-sup {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline;
-}
-
-sup {
-  top: -0.5em;
-}
-
-sub {
-  bottom: -0.25em;
-}
-
-img {
-  width: auto\9;
-  height: auto;
-  max-width: 100%;
-  vertical-align: middle;
-  border: 0;
-  -ms-interpolation-mode: bicubic;
-}
-
-#map_canvas img {
-  max-width: none;
-}
-
-button,
-input,
-select,
-textarea {
-  margin: 0;
-  font-size: 100%;
-  vertical-align: middle;
-}
-
-button,
-input {
-  *overflow: visible;
-  line-height: normal;
-}
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-
-button,
-input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  cursor: pointer;
-  -webkit-appearance: button;
-}
-
-input[type="search"] {
-  -webkit-box-sizing: content-box;
-     -moz-box-sizing: content-box;
-          box-sizing: content-box;
-  -webkit-appearance: textfield;
-}
-
-input[type="search"]::-webkit-search-decoration,
-input[type="search"]::-webkit-search-cancel-button {
-  -webkit-appearance: none;
-}
-
-textarea {
-  overflow: auto;
-  vertical-align: top;
-}
-
-.clearfix {
-  *zoom: 1;
-}
-
-.clearfix:before,
-.clearfix:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.clearfix:after {
-  clear: both;
-}
-
-.hide-text {
-  font: 0/0 a;
-  color: transparent;
-  text-shadow: none;
-  background-color: transparent;
-  border: 0;
-}
-
-.input-block-level {
-  display: block;
-  width: 100%;
-  min-height: 30px;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-body {
-  margin: 0;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 14px;
-  line-height: 20px;
-  color: #333333;
-  background-color: #ffffff;
-}
-
-a {
-  color: #0088cc;
-  text-decoration: none;
-}
-
-a:hover {
-  color: #005580;
-  text-decoration: underline;
-}
-
-.img-rounded {
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-}
-
-.img-polaroid {
-  padding: 4px;
-  background-color: #fff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-     -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-          box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-}
-
-.img-circle {
-  -webkit-border-radius: 500px;
-     -moz-border-radius: 500px;
-          border-radius: 500px;
-}
-
-.row {
-  margin-left: -20px;
-  *zoom: 1;
-}
-
-.row:before,
-.row:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.row:after {
-  clear: both;
-}
-
-[class*="span"] {
-  float: left;
-  min-height: 1px;
-  margin-left: 20px;
-}
-
-.container,
-.navbar-static-top .container,
-.navbar-fixed-top .container,
-.navbar-fixed-bottom .container {
-  width: 940px;
-}
-
-.span12 {
-  width: 940px;
-}
-
-.span11 {
-  width: 860px;
-}
-
-.span10 {
-  width: 780px;
-}
-
-.span9 {
-  width: 700px;
-}
-
-.span8 {
-  width: 620px;
-}
-
-.span7 {
-  width: 540px;
-}
-
-.span6 {
-  width: 460px;
-}
-
-.span5 {
-  width: 380px;
-}
-
-.span4 {
-  width: 300px;
-}
-
-.span3 {
-  width: 220px;
-}
-
-.span2 {
-  width: 140px;
-}
-
-.span1 {
-  width: 60px;
-}
-
-.offset12 {
-  margin-left: 980px;
-}
-
-.offset11 {
-  margin-left: 900px;
-}
-
-.offset10 {
-  margin-left: 820px;
-}
-
-.offset9 {
-  margin-left: 740px;
-}
-
-.offset8 {
-  margin-left: 660px;
-}
-
-.offset7 {
-  margin-left: 580px;
-}
-
-.offset6 {
-  margin-left: 500px;
-}
-
-.offset5 {
-  margin-left: 420px;
-}
-
-.offset4 {
-  margin-left: 340px;
-}
-
-.offset3 {
-  margin-left: 260px;
-}
-
-.offset2 {
-  margin-left: 180px;
-}
-
-.offset1 {
-  margin-left: 100px;
-}
-
-.row-fluid {
-  width: 100%;
-  *zoom: 1;
-}
-
-.row-fluid:before,
-.row-fluid:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.row-fluid:after {
-  clear: both;
-}
-
-.row-fluid [class*="span"] {
-  display: block;
-  float: left;
-  width: 100%;
-  min-height: 30px;
-  margin-left: 2.127659574468085%;
-  *margin-left: 2.074468085106383%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.row-fluid [class*="span"]:first-child {
-  margin-left: 0;
-}
-
-.row-fluid .span12 {
-  width: 100%;
-  *width: 99.94680851063829%;
-}
-
-.row-fluid .span11 {
-  width: 91.48936170212765%;
-  *width: 91.43617021276594%;
-}
-
-.row-fluid .span10 {
-  width: 82.97872340425532%;
-  *width: 82.92553191489361%;
-}
-
-.row-fluid .span9 {
-  width: 74.46808510638297%;
-  *width: 74.41489361702126%;
-}
-
-.row-fluid .span8 {
-  width: 65.95744680851064%;
-  *width: 65.90425531914893%;
-}
-
-.row-fluid .span7 {
-  width: 57.44680851063829%;
-  *width: 57.39361702127659%;
-}
-
-.row-fluid .span6 {
-  width: 48.93617021276595%;
-  *width: 48.88297872340425%;
-}
-
-.row-fluid .span5 {
-  width: 40.42553191489362%;
-  *width: 40.37234042553192%;
-}
-
-.row-fluid .span4 {
-  width: 31.914893617021278%;
-  *width: 31.861702127659576%;
-}
-
-.row-fluid .span3 {
-  width: 23.404255319148934%;
-  *width: 23.351063829787233%;
-}
-
-.row-fluid .span2 {
-  width: 14.893617021276595%;
-  *width: 14.840425531914894%;
-}
-
-.row-fluid .span1 {
-  width: 6.382978723404255%;
-  *width: 6.329787234042553%;
-}
-
-.row-fluid .offset12 {
-  margin-left: 104.25531914893617%;
-  *margin-left: 104.14893617021275%;
-}
-
-.row-fluid .offset12:first-child {
-  margin-left: 102.12765957446808%;
-  *margin-left: 102.02127659574467%;
-}
-
-.row-fluid .offset11 {
-  margin-left: 95.74468085106382%;
-  *margin-left: 95.6382978723404%;
-}
-
-.row-fluid .offset11:first-child {
-  margin-left: 93.61702127659574%;
-  *margin-left: 93.51063829787232%;
-}
-
-.row-fluid .offset10 {
-  margin-left: 87.23404255319149%;
-  *margin-left: 87.12765957446807%;
-}
-
-.row-fluid .offset10:first-child {
-  margin-left: 85.1063829787234%;
-  *margin-left: 84.99999999999999%;
-}
-
-.row-fluid .offset9 {
-  margin-left: 78.72340425531914%;
-  *margin-left: 78.61702127659572%;
-}
-
-.row-fluid .offset9:first-child {
-  margin-left: 76.59574468085106%;
-  *margin-left: 76.48936170212764%;
-}
-
-.row-fluid .offset8 {
-  margin-left: 70.2127659574468%;
-  *margin-left: 70.10638297872339%;
-}
-
-.row-fluid .offset8:first-child {
-  margin-left: 68.08510638297872%;
-  *margin-left: 67.9787234042553%;
-}
-
-.row-fluid .offset7 {
-  margin-left: 61.70212765957446%;
-  *margin-left: 61.59574468085106%;
-}
-
-.row-fluid .offset7:first-child {
-  margin-left: 59.574468085106375%;
-  *margin-left: 59.46808510638297%;
-}
-
-.row-fluid .offset6 {
-  margin-left: 53.191489361702125%;
-  *margin-left: 53.085106382978715%;
-}
-
-.row-fluid .offset6:first-child {
-  margin-left: 51.063829787234035%;
-  *margin-left: 50.95744680851063%;
-}
-
-.row-fluid .offset5 {
-  margin-left: 44.68085106382979%;
-  *margin-left: 44.57446808510638%;
-}
-
-.row-fluid .offset5:first-child {
-  margin-left: 42.5531914893617%;
-  *margin-left: 42.4468085106383%;
-}
-
-.row-fluid .offset4 {
-  margin-left: 36.170212765957444%;
-  *margin-left: 36.06382978723405%;
-}
-
-.row-fluid .offset4:first-child {
-  margin-left: 34.04255319148936%;
-  *margin-left: 33.93617021276596%;
-}
-
-.row-fluid .offset3 {
-  margin-left: 27.659574468085104%;
-  *margin-left: 27.5531914893617%;
-}
-
-.row-fluid .offset3:first-child {
-  margin-left: 25.53191489361702%;
-  *margin-left: 25.425531914893618%;
-}
-
-.row-fluid .offset2 {
-  margin-left: 19.148936170212764%;
-  *margin-left: 19.04255319148936%;
-}
-
-.row-fluid .offset2:first-child {
-  margin-left: 17.02127659574468%;
-  *margin-left: 16.914893617021278%;
-}
-
-.row-fluid .offset1 {
-  margin-left: 10.638297872340425%;
-  *margin-left: 10.53191489361702%;
-}
-
-.row-fluid .offset1:first-child {
-  margin-left: 8.51063829787234%;
-  *margin-left: 8.404255319148938%;
-}
-
-[class*="span"].hide,
-.row-fluid [class*="span"].hide {
-  display: none;
-}
-
-[class*="span"].pull-right,
-.row-fluid [class*="span"].pull-right {
-  float: right;
-}
-
-.container {
-  margin-right: auto;
-  margin-left: auto;
-  *zoom: 1;
-}
-
-.container:before,
-.container:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.container:after {
-  clear: both;
-}
-
-.container-fluid {
-  padding-right: 20px;
-  padding-left: 20px;
-  *zoom: 1;
-}
-
-.container-fluid:before,
-.container-fluid:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.container-fluid:after {
-  clear: both;
-}
-
-p {
-  margin: 0 0 10px;
-}
-
-.lead {
-  margin-bottom: 20px;
-  font-size: 21px;
-  font-weight: 200;
-  line-height: 30px;
-}
-
-small {
-  font-size: 85%;
-}
-
-strong {
-  font-weight: bold;
-}
-
-em {
-  font-style: italic;
-}
-
-cite {
-  font-style: normal;
-}
-
-.muted {
-  color: #999999;
-}
-
-.text-warning {
-  color: #c09853;
-}
-
-.text-error {
-  color: #b94a48;
-}
-
-.text-info {
-  color: #3a87ad;
-}
-
-.text-success {
-  color: #468847;
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  margin: 10px 0;
-  font-family: inherit;
-  font-weight: bold;
-  line-height: 1;
-  color: inherit;
-  text-rendering: optimizelegibility;
-}
-
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small {
-  font-weight: normal;
-  line-height: 1;
-  color: #999999;
-}
-
-h1 {
-  font-size: 36px;
-  line-height: 40px;
-}
-
-h2 {
-  font-size: 30px;
-  line-height: 40px;
-}
-
-h3 {
-  font-size: 24px;
-  line-height: 40px;
-}
-
-h4 {
-  font-size: 18px;
-  line-height: 20px;
-}
-
-h5 {
-  font-size: 14px;
-  line-height: 20px;
-}
-
-h6 {
-  font-size: 12px;
-  line-height: 20px;
-}
-
-h1 small {
-  font-size: 24px;
-}
-
-h2 small {
-  font-size: 18px;
-}
-
-h3 small {
-  font-size: 14px;
-}
-
-h4 small {
-  font-size: 14px;
-}
-
-.page-header {
-  padding-bottom: 9px;
-  margin: 20px 0 30px;
-  border-bottom: 1px solid #eeeeee;
-}
-
-ul,
-ol {
-  padding: 0;
-  margin: 0 0 10px 25px;
-}
-
-ul ul,
-ul ol,
-ol ol,
-ol ul {
-  margin-bottom: 0;
-}
-
-li {
-  line-height: 20px;
-}
-
-ul.unstyled,
-ol.unstyled {
-  margin-left: 0;
-  list-style: none;
-}
-
-dl {
-  margin-bottom: 20px;
-}
-
-dt,
-dd {
-  line-height: 20px;
-}
-
-dt {
-  font-weight: bold;
-}
-
-dd {
-  margin-left: 10px;
-}
-
-.dl-horizontal {
-  *zoom: 1;
-}
-
-.dl-horizontal:before,
-.dl-horizontal:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.dl-horizontal:after {
-  clear: both;
-}
-
-.dl-horizontal dt {
-  float: left;
-  width: 160px;
-  overflow: hidden;
-  clear: left;
-  text-align: right;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-.dl-horizontal dd {
-  margin-left: 180px;
-}
-
-hr {
-  margin: 20px 0;
-  border: 0;
-  border-top: 1px solid #eeeeee;
-  border-bottom: 1px solid #ffffff;
-}
-
-abbr[title] {
-  cursor: help;
-  border-bottom: 1px dotted #999999;
-}
-
-abbr.initialism {
-  font-size: 90%;
-  text-transform: uppercase;
-}
-
-blockquote {
-  padding: 0 0 0 15px;
-  margin: 0 0 20px;
-  border-left: 5px solid #eeeeee;
-}
-
-blockquote p {
-  margin-bottom: 0;
-  font-size: 16px;
-  font-weight: 300;
-  line-height: 25px;
-}
-
-blockquote small {
-  display: block;
-  line-height: 20px;
-  color: #999999;
-}
-
-blockquote small:before {
-  content: '\2014 \00A0';
-}
-
-blockquote.pull-right {
-  float: right;
-  padding-right: 15px;
-  padding-left: 0;
-  border-right: 5px solid #eeeeee;
-  border-left: 0;
-}
-
-blockquote.pull-right p,
-blockquote.pull-right small {
-  text-align: right;
-}
-
-blockquote.pull-right small:before {
-  content: '';
-}
-
-blockquote.pull-right small:after {
-  content: '\00A0 \2014';
-}
-
-q:before,
-q:after,
-blockquote:before,
-blockquote:after {
-  content: "";
-}
-
-address {
-  display: block;
-  margin-bottom: 20px;
-  font-style: normal;
-  line-height: 20px;
-}
-
-code,
-pre {
-  padding: 0 3px 2px;
-  font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
-  font-size: 12px;
-  color: #333333;
-  -webkit-border-radius: 3px;
-     -moz-border-radius: 3px;
-          border-radius: 3px;
-}
-
-code {
-  padding: 2px 4px;
-  color: #d14;
-  background-color: #f7f7f9;
-  border: 1px solid #e1e1e8;
-}
-
-pre {
-  display: block;
-  padding: 9.5px;
-  margin: 0 0 10px;
-  font-size: 13px;
-  line-height: 20px;
-  word-break: break-all;
-  word-wrap: break-word;
-  white-space: pre;
-  white-space: pre-wrap;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.15);
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-}
-
-pre.prettyprint {
-  margin-bottom: 20px;
-}
-
-pre code {
-  padding: 0;
-  color: inherit;
-  background-color: transparent;
-  border: 0;
-}
-
-.pre-scrollable {
-  max-height: 340px;
-  overflow-y: scroll;
-}
-
-form {
-  margin: 0 0 20px;
-}
-
-fieldset {
-  padding: 0;
-  margin: 0;
-  border: 0;
-}
-
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: 20px;
-  font-size: 21px;
-  line-height: 40px;
-  color: #333333;
-  border: 0;
-  border-bottom: 1px solid #e5e5e5;
-}
-
-legend small {
-  font-size: 15px;
-  color: #999999;
-}
-
-label,
-input,
-button,
-select,
-textarea {
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 20px;
-}
-
-input,
-button,
-select,
-textarea {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-}
-
-label {
-  display: block;
-  margin-bottom: 5px;
-}
-
-select,
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  display: inline-block;
-  height: 20px;
-  padding: 4px 6px;
-  margin-bottom: 9px;
-  font-size: 14px;
-  line-height: 20px;
-  color: #555555;
-  -webkit-border-radius: 3px;
-     -moz-border-radius: 3px;
-          border-radius: 3px;
-}
-
-input,
-textarea,
-.uneditable-input {
-  width: 206px;
-}
-
-textarea {
-  height: auto;
-}
-
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  background-color: #ffffff;
-  border: 1px solid #cccccc;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
-     -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
-       -o-transition: border linear 0.2s, box-shadow linear 0.2s;
-          transition: border linear 0.2s, box-shadow linear 0.2s;
-}
-
-textarea:focus,
-input[type="text"]:focus,
-input[type="password"]:focus,
-input[type="datetime"]:focus,
-input[type="datetime-local"]:focus,
-input[type="date"]:focus,
-input[type="month"]:focus,
-input[type="time"]:focus,
-input[type="week"]:focus,
-input[type="number"]:focus,
-input[type="email"]:focus,
-input[type="url"]:focus,
-input[type="search"]:focus,
-input[type="tel"]:focus,
-input[type="color"]:focus,
-.uneditable-input:focus {
-  border-color: rgba(82, 168, 236, 0.8);
-  outline: 0;
-  outline: thin dotted \9;
-  /* IE6-9 */
-
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-}
-
-input[type="radio"],
-input[type="checkbox"] {
-  margin: 4px 0 0;
-  margin-top: 1px \9;
-  *margin-top: 0;
-  line-height: normal;
-  cursor: pointer;
-}
-
-input[type="file"],
-input[type="image"],
-input[type="submit"],
-input[type="reset"],
-input[type="button"],
-input[type="radio"],
-input[type="checkbox"] {
-  width: auto;
-}
-
-select,
-input[type="file"] {
-  height: 30px;
-  /* In IE7, the height of the select element cannot be changed by height, only font-size */
-
-  *margin-top: 4px;
-  /* For IE7, add top margin to align select with labels */
-
-  line-height: 30px;
-}
-
-select {
-  width: 220px;
-  background-color: #ffffff;
-  border: 1px solid #cccccc;
-}
-
-select[multiple],
-select[size] {
-  height: auto;
-}
-
-select:focus,
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-
-.uneditable-input,
-.uneditable-textarea {
-  color: #999999;
-  cursor: not-allowed;
-  background-color: #fcfcfc;
-  border-color: #cccccc;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-}
-
-.uneditable-input {
-  overflow: hidden;
-  white-space: nowrap;
-}
-
-.uneditable-textarea {
-  width: auto;
-  height: auto;
-}
-
-input:-moz-placeholder,
-textarea:-moz-placeholder {
-  color: #999999;
-}
-
-input:-ms-input-placeholder,
-textarea:-ms-input-placeholder {
-  color: #999999;
-}
-
-input::-webkit-input-placeholder,
-textarea::-webkit-input-placeholder {
-  color: #999999;
-}
-
-.radio,
-.checkbox {
-  min-height: 18px;
-  padding-left: 18px;
-}
-
-.radio input[type="radio"],
-.checkbox input[type="checkbox"] {
-  float: left;
-  margin-left: -18px;
-}
-
-.controls > .radio:first-child,
-.controls > .checkbox:first-child {
-  padding-top: 5px;
-}
-
-.radio.inline,
-.checkbox.inline {
-  display: inline-block;
-  padding-top: 5px;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-
-.radio.inline + .radio.inline,
-.checkbox.inline + .checkbox.inline {
-  margin-left: 10px;
-}
-
-.input-mini {
-  width: 60px;
-}
-
-.input-small {
-  width: 90px;
-}
-
-.input-medium {
-  width: 150px;
-}
-
-.input-large {
-  width: 210px;
-}
-
-.input-xlarge {
-  width: 270px;
-}
-
-.input-xxlarge {
-  width: 530px;
-}
-
-input[class*="span"],
-select[class*="span"],
-textarea[class*="span"],
-.uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"] {
-  float: none;
-  margin-left: 0;
-}
-
-.input-append input[class*="span"],
-.input-append .uneditable-input[class*="span"],
-.input-prepend input[class*="span"],
-.input-prepend .uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"],
-.row-fluid .input-prepend [class*="span"],
-.row-fluid .input-append [class*="span"] {
-  display: inline-block;
-}
-
-input,
-textarea,
-.uneditable-input {
-  margin-left: 0;
-}
-
-.controls-row [class*="span"] + [class*="span"] {
-  margin-left: 20px;
-}
-
-input.span12,
-textarea.span12,
-.uneditable-input.span12 {
-  width: 926px;
-}
-
-input.span11,
-textarea.span11,
-.uneditable-input.span11 {
-  width: 846px;
-}
-
-input.span10,
-textarea.span10,
-.uneditable-input.span10 {
-  width: 766px;
-}
-
-input.span9,
-textarea.span9,
-.uneditable-input.span9 {
-  width: 686px;
-}
-
-input.span8,
-textarea.span8,
-.uneditable-input.span8 {
-  width: 606px;
-}
-
-input.span7,
-textarea.span7,
-.uneditable-input.span7 {
-  width: 526px;
-}
-
-input.span6,
-textarea.span6,
-.uneditable-input.span6 {
-  width: 446px;
-}
-
-input.span5,
-textarea.span5,
-.uneditable-input.span5 {
-  width: 366px;
-}
-
-input.span4,
-textarea.span4,
-.uneditable-input.span4 {
-  width: 286px;
-}
-
-input.span3,
-textarea.span3,
-.uneditable-input.span3 {
-  width: 206px;
-}
-
-input.span2,
-textarea.span2,
-.uneditable-input.span2 {
-  width: 126px;
-}
-
-input.span1,
-textarea.span1,
-.uneditable-input.span1 {
-  width: 46px;
-}
-
-.controls-row {
-  *zoom: 1;
-}
-
-.controls-row:before,
-.controls-row:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.controls-row:after {
-  clear: both;
-}
-
-.controls-row [class*="span"] {
-  float: left;
-}
-
-input[disabled],
-select[disabled],
-textarea[disabled],
-input[readonly],
-select[readonly],
-textarea[readonly] {
-  cursor: not-allowed;
-  background-color: #eeeeee;
-}
-
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-input[type="radio"][readonly],
-input[type="checkbox"][readonly] {
-  background-color: transparent;
-}
-
-.control-group.warning > label,
-.control-group.warning .help-block,
-.control-group.warning .help-inline {
-  color: #c09853;
-}
-
-.control-group.warning .checkbox,
-.control-group.warning .radio,
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  color: #c09853;
-}
-
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  border-color: #c09853;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.control-group.warning input:focus,
-.control-group.warning select:focus,
-.control-group.warning textarea:focus {
-  border-color: #a47e3c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-}
-
-.control-group.warning .input-prepend .add-on,
-.control-group.warning .input-append .add-on {
-  color: #c09853;
-  background-color: #fcf8e3;
-  border-color: #c09853;
-}
-
-.control-group.error > label,
-.control-group.error .help-block,
-.control-group.error .help-inline {
-  color: #b94a48;
-}
-
-.control-group.error .checkbox,
-.control-group.error .radio,
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  color: #b94a48;
-}
-
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  border-color: #b94a48;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.control-group.error input:focus,
-.control-group.error select:focus,
-.control-group.error textarea:focus {
-  border-color: #953b39;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-}
-
-.control-group.error .input-prepend .add-on,
-.control-group.error .input-append .add-on {
-  color: #b94a48;
-  background-color: #f2dede;
-  border-color: #b94a48;
-}
-
-.control-group.success > label,
-.control-group.success .help-block,
-.control-group.success .help-inline {
-  color: #468847;
-}
-
-.control-group.success .checkbox,
-.control-group.success .radio,
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  color: #468847;
-}
-
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  border-color: #468847;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.control-group.success input:focus,
-.control-group.success select:focus,
-.control-group.success textarea:focus {
-  border-color: #356635;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-}
-
-.control-group.success .input-prepend .add-on,
-.control-group.success .input-append .add-on {
-  color: #468847;
-  background-color: #dff0d8;
-  border-color: #468847;
-}
-
-.control-group.info > label,
-.control-group.info .help-block,
-.control-group.info .help-inline {
-  color: #3a87ad;
-}
-
-.control-group.info .checkbox,
-.control-group.info .radio,
-.control-group.info input,
-.control-group.info select,
-.control-group.info textarea {
-  color: #3a87ad;
-}
-
-.control-group.info input,
-.control-group.info select,
-.control-group.info textarea {
-  border-color: #3a87ad;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.control-group.info input:focus,
-.control-group.info select:focus,
-.control-group.info textarea:focus {
-  border-color: #2d6987;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-}
-
-.control-group.info .input-prepend .add-on,
-.control-group.info .input-append .add-on {
-  color: #3a87ad;
-  background-color: #d9edf7;
-  border-color: #3a87ad;
-}
-
-input:focus:required:invalid,
-textarea:focus:required:invalid,
-select:focus:required:invalid {
-  color: #b94a48;
-  border-color: #ee5f5b;
-}
-
-input:focus:required:invalid:focus,
-textarea:focus:required:invalid:focus,
-select:focus:required:invalid:focus {
-  border-color: #e9322d;
-  -webkit-box-shadow: 0 0 6px #f8b9b7;
-     -moz-box-shadow: 0 0 6px #f8b9b7;
-          box-shadow: 0 0 6px #f8b9b7;
-}
-
-.form-actions {
-  padding: 19px 20px 20px;
-  margin-top: 20px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border-top: 1px solid #e5e5e5;
-  *zoom: 1;
-}
-
-.form-actions:before,
-.form-actions:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.form-actions:after {
-  clear: both;
-}
-
-.help-block,
-.help-inline {
-  color: #595959;
-}
-
-.help-block {
-  display: block;
-  margin-bottom: 10px;
-}
-
-.help-inline {
-  display: inline-block;
-  *display: inline;
-  padding-left: 5px;
-  vertical-align: middle;
-  *zoom: 1;
-}
-
-.input-append,
-.input-prepend {
-  margin-bottom: 5px;
-  font-size: 0;
-  white-space: nowrap;
-}
-
-.input-append input,
-.input-prepend input,
-.input-append select,
-.input-prepend select,
-.input-append .uneditable-input,
-.input-prepend .uneditable-input {
-  position: relative;
-  margin-bottom: 0;
-  *margin-left: 0;
-  font-size: 14px;
-  vertical-align: top;
-  -webkit-border-radius: 0 3px 3px 0;
-     -moz-border-radius: 0 3px 3px 0;
-          border-radius: 0 3px 3px 0;
-}
-
-.input-append input:focus,
-.input-prepend input:focus,
-.input-append select:focus,
-.input-prepend select:focus,
-.input-append .uneditable-input:focus,
-.input-prepend .uneditable-input:focus {
-  z-index: 2;
-}
-
-.input-append .add-on,
-.input-prepend .add-on {
-  display: inline-block;
-  width: auto;
-  height: 20px;
-  min-width: 16px;
-  padding: 4px 5px;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 20px;
-  text-align: center;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #eeeeee;
-  border: 1px solid #ccc;
-}
-
-.input-append .add-on,
-.input-prepend .add-on,
-.input-append .btn,
-.input-prepend .btn {
-  vertical-align: top;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.input-append .active,
-.input-prepend .active {
-  background-color: #a9dba9;
-  border-color: #46a546;
-}
-
-.input-prepend .add-on,
-.input-prepend .btn {
-  margin-right: -1px;
-}
-
-.input-prepend .add-on:first-child,
-.input-prepend .btn:first-child {
-  -webkit-border-radius: 3px 0 0 3px;
-     -moz-border-radius: 3px 0 0 3px;
-          border-radius: 3px 0 0 3px;
-}
-
-.input-append input,
-.input-append select,
-.input-append .uneditable-input {
-  -webkit-border-radius: 3px 0 0 3px;
-     -moz-border-radius: 3px 0 0 3px;
-          border-radius: 3px 0 0 3px;
-}
-
-.input-append .add-on,
-.input-append .btn {
-  margin-left: -1px;
-}
-
-.input-append .add-on:last-child,
-.input-append .btn:last-child {
-  -webkit-border-radius: 0 3px 3px 0;
-     -moz-border-radius: 0 3px 3px 0;
-          border-radius: 0 3px 3px 0;
-}
-
-.input-prepend.input-append input,
-.input-prepend.input-append select,
-.input-prepend.input-append .uneditable-input {
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.input-prepend.input-append .add-on:first-child,
-.input-prepend.input-append .btn:first-child {
-  margin-right: -1px;
-  -webkit-border-radius: 3px 0 0 3px;
-     -moz-border-radius: 3px 0 0 3px;
-          border-radius: 3px 0 0 3px;
-}
-
-.input-prepend.input-append .add-on:last-child,
-.input-prepend.input-append .btn:last-child {
-  margin-left: -1px;
-  -webkit-border-radius: 0 3px 3px 0;
-     -moz-border-radius: 0 3px 3px 0;
-          border-radius: 0 3px 3px 0;
-}
-
-input.search-query {
-  padding-right: 14px;
-  padding-right: 4px \9;
-  padding-left: 14px;
-  padding-left: 4px \9;
-  /* IE7-8 doesn't have border-radius, so don't indent the padding */
-
-  margin-bottom: 0;
-  -webkit-border-radius: 15px;
-     -moz-border-radius: 15px;
-          border-radius: 15px;
-}
-
-/* Allow for input prepend/append in search forms */
-
-.form-search .input-append .search-query,
-.form-search .input-prepend .search-query {
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.form-search .input-append .search-query {
-  -webkit-border-radius: 14px 0 0 14px;
-     -moz-border-radius: 14px 0 0 14px;
-          border-radius: 14px 0 0 14px;
-}
-
-.form-search .input-append .btn {
-  -webkit-border-radius: 0 14px 14px 0;
-     -moz-border-radius: 0 14px 14px 0;
-          border-radius: 0 14px 14px 0;
-}
-
-.form-search .input-prepend .search-query {
-  -webkit-border-radius: 0 14px 14px 0;
-     -moz-border-radius: 0 14px 14px 0;
-          border-radius: 0 14px 14px 0;
-}
-
-.form-search .input-prepend .btn {
-  -webkit-border-radius: 14px 0 0 14px;
-     -moz-border-radius: 14px 0 0 14px;
-          border-radius: 14px 0 0 14px;
-}
-
-.form-search input,
-.form-inline input,
-.form-horizontal input,
-.form-search textarea,
-.form-inline textarea,
-.form-horizontal textarea,
-.form-search select,
-.form-inline select,
-.form-horizontal select,
-.form-search .help-inline,
-.form-inline .help-inline,
-.form-horizontal .help-inline,
-.form-search .uneditable-input,
-.form-inline .uneditable-input,
-.form-horizontal .uneditable-input,
-.form-search .input-prepend,
-.form-inline .input-prepend,
-.form-horizontal .input-prepend,
-.form-search .input-append,
-.form-inline .input-append,
-.form-horizontal .input-append {
-  display: inline-block;
-  *display: inline;
-  margin-bottom: 0;
-  vertical-align: middle;
-  *zoom: 1;
-}
-
-.form-search .hide,
-.form-inline .hide,
-.form-horizontal .hide {
-  display: none;
-}
-
-.form-search label,
-.form-inline label,
-.form-search .btn-group,
-.form-inline .btn-group {
-  display: inline-block;
-}
-
-.form-search .input-append,
-.form-inline .input-append,
-.form-search .input-prepend,
-.form-inline .input-prepend {
-  margin-bottom: 0;
-}
-
-.form-search .radio,
-.form-search .checkbox,
-.form-inline .radio,
-.form-inline .checkbox {
-  padding-left: 0;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-
-.form-search .radio input[type="radio"],
-.form-search .checkbox input[type="checkbox"],
-.form-inline .radio input[type="radio"],
-.form-inline .checkbox input[type="checkbox"] {
-  float: left;
-  margin-right: 3px;
-  margin-left: 0;
-}
-
-.control-group {
-  margin-bottom: 10px;
-}
-
-legend + .control-group {
-  margin-top: 20px;
-  -webkit-margin-top-collapse: separate;
-}
-
-.form-horizontal .control-group {
-  margin-bottom: 20px;
-  *zoom: 1;
-}
-
-.form-horizontal .control-group:before,
-.form-horizontal .control-group:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.form-horizontal .control-group:after {
-  clear: both;
-}
-
-.form-horizontal .control-label {
-  float: left;
-  width: 160px;
-  padding-top: 5px;
-  text-align: right;
-}
-
-.form-horizontal .controls {
-  *display: inline-block;
-  *padding-left: 20px;
-  margin-left: 180px;
-  *margin-left: 0;
-}
-
-.form-horizontal .controls:first-child {
-  *padding-left: 180px;
-}
-
-.form-horizontal .help-block {
-  margin-bottom: 0;
-}
-
-.form-horizontal input + .help-block,
-.form-horizontal select + .help-block,
-.form-horizontal textarea + .help-block {
-  margin-top: 10px;
-}
-
-.form-horizontal .form-actions {
-  padding-left: 180px;
-}
-
-table {
-  max-width: 100%;
-  background-color: transparent;
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-
-.table {
-  width: 100%;
-  margin-bottom: 20px;
-}
-
-.table th,
-.table td {
-  padding: 8px;
-  line-height: 20px;
-  text-align: left;
-  vertical-align: top;
-  border-top: 1px solid #dddddd;
-}
-
-.table th {
-  font-weight: bold;
-}
-
-.table thead th {
-  vertical-align: bottom;
-}
-
-.table caption + thead tr:first-child th,
-.table caption + thead tr:first-child td,
-.table colgroup + thead tr:first-child th,
-.table colgroup + thead tr:first-child td,
-.table thead:first-child tr:first-child th,
-.table thead:first-child tr:first-child td {
-  border-top: 0;
-}
-
-.table tbody + tbody {
-  border-top: 2px solid #dddddd;
-}
-
-.table-condensed th,
-.table-condensed td {
-  padding: 4px 5px;
-}
-
-.table-bordered {
-  border: 1px solid #dddddd;
-  border-collapse: separate;
-  *border-collapse: collapse;
-  border-left: 0;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-}
-
-.table-bordered th,
-.table-bordered td {
-  border-left: 1px solid #dddddd;
-}
-
-.table-bordered caption + thead tr:first-child th,
-.table-bordered caption + tbody tr:first-child th,
-.table-bordered caption + tbody tr:first-child td,
-.table-bordered colgroup + thead tr:first-child th,
-.table-bordered colgroup + tbody tr:first-child th,
-.table-bordered colgroup + tbody tr:first-child td,
-.table-bordered thead:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child td {
-  border-top: 0;
-}
-
-.table-bordered thead:first-child tr:first-child th:first-child,
-.table-bordered tbody:first-child tr:first-child td:first-child {
-  -webkit-border-top-left-radius: 4px;
-          border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-}
-
-.table-bordered thead:first-child tr:first-child th:last-child,
-.table-bordered tbody:first-child tr:first-child td:last-child {
-  -webkit-border-top-right-radius: 4px;
-          border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-}
-
-.table-bordered thead:last-child tr:last-child th:first-child,
-.table-bordered tbody:last-child tr:last-child td:first-child,
-.table-bordered tfoot:last-child tr:last-child td:first-child {
-  -webkit-border-radius: 0 0 0 4px;
-     -moz-border-radius: 0 0 0 4px;
-          border-radius: 0 0 0 4px;
-  -webkit-border-bottom-left-radius: 4px;
-          border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-}
-
-.table-bordered thead:last-child tr:last-child th:last-child,
-.table-bordered tbody:last-child tr:last-child td:last-child,
-.table-bordered tfoot:last-child tr:last-child td:last-child {
-  -webkit-border-bottom-right-radius: 4px;
-          border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-}
-
-.table-bordered caption + thead tr:first-child th:first-child,
-.table-bordered caption + tbody tr:first-child td:first-child,
-.table-bordered colgroup + thead tr:first-child th:first-child,
-.table-bordered colgroup + tbody tr:first-child td:first-child {
-  -webkit-border-top-left-radius: 4px;
-          border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-}
-
-.table-bordered caption + thead tr:first-child th:last-child,
-.table-bordered caption + tbody tr:first-child td:last-child,
-.table-bordered colgroup + thead tr:first-child th:last-child,
-.table-bordered colgroup + tbody tr:first-child td:last-child {
-  -webkit-border-top-right-radius: 4px;
-          border-top-right-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-}
-
-.table-striped tbody tr:nth-child(odd) td,
-.table-striped tbody tr:nth-child(odd) th {
-  background-color: #f9f9f9;
-}
-
-.table-hover tbody tr:hover td,
-.table-hover tbody tr:hover th {
-  background-color: #f5f5f5;
-}
-
-table [class*=span],
-.row-fluid table [class*=span] {
-  display: table-cell;
-  float: none;
-  margin-left: 0;
-}
-
-.table .span1 {
-  float: none;
-  width: 44px;
-  margin-left: 0;
-}
-
-.table .span2 {
-  float: none;
-  width: 124px;
-  margin-left: 0;
-}
-
-.table .span3 {
-  float: none;
-  width: 204px;
-  margin-left: 0;
-}
-
-.table .span4 {
-  float: none;
-  width: 284px;
-  margin-left: 0;
-}
-
-.table .span5 {
-  float: none;
-  width: 364px;
-  margin-left: 0;
-}
-
-.table .span6 {
-  float: none;
-  width: 444px;
-  margin-left: 0;
-}
-
-.table .span7 {
-  float: none;
-  width: 524px;
-  margin-left: 0;
-}
-
-.table .span8 {
-  float: none;
-  width: 604px;
-  margin-left: 0;
-}
-
-.table .span9 {
-  float: none;
-  width: 684px;
-  margin-left: 0;
-}
-
-.table .span10 {
-  float: none;
-  width: 764px;
-  margin-left: 0;
-}
-
-.table .span11 {
-  float: none;
-  width: 844px;
-  margin-left: 0;
-}
-
-.table .span12 {
-  float: none;
-  width: 924px;
-  margin-left: 0;
-}
-
-.table .span13 {
-  float: none;
-  width: 1004px;
-  margin-left: 0;
-}
-
-.table .span14 {
-  float: none;
-  width: 1084px;
-  margin-left: 0;
-}
-
-.table .span15 {
-  float: none;
-  width: 1164px;
-  margin-left: 0;
-}
-
-.table .span16 {
-  float: none;
-  width: 1244px;
-  margin-left: 0;
-}
-
-.table .span17 {
-  float: none;
-  width: 1324px;
-  margin-left: 0;
-}
-
-.table .span18 {
-  float: none;
-  width: 1404px;
-  margin-left: 0;
-}
-
-.table .span19 {
-  float: none;
-  width: 1484px;
-  margin-left: 0;
-}
-
-.table .span20 {
-  float: none;
-  width: 1564px;
-  margin-left: 0;
-}
-
-.table .span21 {
-  float: none;
-  width: 1644px;
-  margin-left: 0;
-}
-
-.table .span22 {
-  float: none;
-  width: 1724px;
-  margin-left: 0;
-}
-
-.table .span23 {
-  float: none;
-  width: 1804px;
-  margin-left: 0;
-}
-
-.table .span24 {
-  float: none;
-  width: 1884px;
-  margin-left: 0;
-}
-
-.table tbody tr.success td {
-  background-color: #dff0d8;
-}
-
-.table tbody tr.error td {
-  background-color: #f2dede;
-}
-
-.table tbody tr.warning td {
-  background-color: #fcf8e3;
-}
-
-.table tbody tr.info td {
-  background-color: #d9edf7;
-}
-
-.table-hover tbody tr.success:hover td {
-  background-color: #d0e9c6;
-}
-
-.table-hover tbody tr.error:hover td {
-  background-color: #ebcccc;
-}
-
-.table-hover tbody tr.warning:hover td {
-  background-color: #faf2cc;
-}
-
-.table-hover tbody tr.info:hover td {
-  background-color: #c4e3f3;
-}
-
-[class^="icon-"],
-[class*=" icon-"] {
-  display: inline-block;
-  width: 14px;
-  height: 14px;
-  margin-top: 1px;
-  *margin-right: .3em;
-  line-height: 14px;
-  vertical-align: text-top;
-  background-image: url("../img/glyphicons-halflings.png");
-  background-position: 14px 14px;
-  background-repeat: no-repeat;
-}
-
-/* White icons with optional class, or on hover/active states of certain elements */
-
-.icon-white,
-.nav-tabs > .active > a > [class^="icon-"],
-.nav-tabs > .active > a > [class*=" icon-"],
-.nav-pills > .active > a > [class^="icon-"],
-.nav-pills > .active > a > [class*=" icon-"],
-.nav-list > .active > a > [class^="icon-"],
-.nav-list > .active > a > [class*=" icon-"],
-.navbar-inverse .nav > .active > a > [class^="icon-"],
-.navbar-inverse .nav > .active > a > [class*=" icon-"],
-.dropdown-menu > li > a:hover > [class^="icon-"],
-.dropdown-menu > li > a:hover > [class*=" icon-"],
-.dropdown-menu > .active > a > [class^="icon-"],
-.dropdown-menu > .active > a > [class*=" icon-"] {
-  background-image: url("../img/glyphicons-halflings-white.png");
-}
-
-.icon-glass {
-  background-position: 0      0;
-}
-
-.icon-music {
-  background-position: -24px 0;
-}
-
-.icon-search {
-  background-position: -48px 0;
-}
-
-.icon-envelope {
-  background-position: -72px 0;
-}
-
-.icon-heart {
-  background-position: -96px 0;
-}
-
-.icon-star {
-  background-position: -120px 0;
-}
-
-.icon-star-empty {
-  background-position: -144px 0;
-}
-
-.icon-user {
-  background-position: -168px 0;
-}
-
-.icon-film {
-  background-position: -192px 0;
-}
-
-.icon-th-large {
-  background-position: -216px 0;
-}
-
-.icon-th {
-  background-position: -240px 0;
-}
-
-.icon-th-list {
-  background-position: -264px 0;
-}
-
-.icon-ok {
-  background-position: -288px 0;
-}
-
-.icon-remove {
-  background-position: -312px 0;
-}
-
-.icon-zoom-in {
-  background-position: -336px 0;
-}
-
-.icon-zoom-out {
-  background-position: -360px 0;
-}
-
-.icon-off {
-  background-position: -384px 0;
-}
-
-.icon-signal {
-  background-position: -408px 0;
-}
-
-.icon-cog {
-  background-position: -432px 0;
-}
-
-.icon-trash {
-  background-position: -456px 0;
-}
-
-.icon-home {
-  background-position: 0 -24px;
-}
-
-.icon-file {
-  background-position: -24px -24px;
-}
-
-.icon-time {
-  background-position: -48px -24px;
-}
-
-.icon-road {
-  background-position: -72px -24px;
-}
-
-.icon-download-alt {
-  background-position: -96px -24px;
-}
-
-.icon-download {
-  background-position: -120px -24px;
-}
-
-.icon-upload {
-  background-position: -144px -24px;
-}
-
-.icon-inbox {
-  background-position: -168px -24px;
-}
-
-.icon-play-circle {
-  background-position: -192px -24px;
-}
-
-.icon-repeat {
-  background-position: -216px -24px;
-}
-
-.icon-refresh {
-  background-position: -240px -24px;
-}
-
-.icon-list-alt {
-  background-position: -264px -24px;
-}
-
-.icon-lock {
-  background-position: -287px -24px;
-}
-
-.icon-flag {
-  background-position: -312px -24px;
-}
-
-.icon-headphones {
-  background-position: -336px -24px;
-}
-
-.icon-volume-off {
-  background-position: -360px -24px;
-}
-
-.icon-volume-down {
-  background-position: -384px -24px;
-}
-
-.icon-volume-up {
-  background-position: -408px -24px;
-}
-
-.icon-qrcode {
-  background-position: -432px -24px;
-}
-
-.icon-barcode {
-  background-position: -456px -24px;
-}
-
-.icon-tag {
-  background-position: 0 -48px;
-}
-
-.icon-tags {
-  background-position: -25px -48px;
-}
-
-.icon-book {
-  background-position: -48px -48px;
-}
-
-.icon-bookmark {
-  background-position: -72px -48px;
-}
-
-.icon-print {
-  background-position: -96px -48px;
-}
-
-.icon-camera {
-  background-position: -120px -48px;
-}
-
-.icon-font {
-  background-position: -144px -48px;
-}
-
-.icon-bold {
-  background-position: -167px -48px;
-}
-
-.icon-italic {
-  background-position: -192px -48px;
-}
-
-.icon-text-height {
-  background-position: -216px -48px;
-}
-
-.icon-text-width {
-  background-position: -240px -48px;
-}
-
-.icon-align-left {
-  background-position: -264px -48px;
-}
-
-.icon-align-center {
-  background-position: -288px -48px;
-}
-
-.icon-align-right {
-  background-position: -312px -48px;
-}
-
-.icon-align-justify {
-  background-position: -336px -48px;
-}
-
-.icon-list {
-  background-position: -360px -48px;
-}
-
-.icon-indent-left {
-  background-position: -384px -48px;
-}
-
-.icon-indent-right {
-  background-position: -408px -48px;
-}
-
-.icon-facetime-video {
-  background-position: -432px -48px;
-}
-
-.icon-picture {
-  background-position: -456px -48px;
-}
-
-.icon-pencil {
-  background-position: 0 -72px;
-}
-
-.icon-map-marker {
-  background-position: -24px -72px;
-}
-
-.icon-adjust {
-  background-position: -48px -72px;
-}
-
-.icon-tint {
-  background-position: -72px -72px;
-}
-
-.icon-edit {
-  background-position: -96px -72px;
-}
-
-.icon-share {
-  background-position: -120px -72px;
-}
-
-.icon-check {
-  background-position: -144px -72px;
-}
-
-.icon-move {
-  background-position: -168px -72px;
-}
-
-.icon-step-backward {
-  background-position: -192px -72px;
-}
-
-.icon-fast-backward {
-  background-position: -216px -72px;
-}
-
-.icon-backward {
-  background-position: -240px -72px;
-}
-
-.icon-play {
-  background-position: -264px -72px;
-}
-
-.icon-pause {
-  background-position: -288px -72px;
-}
-
-.icon-stop {
-  background-position: -312px -72px;
-}
-
-.icon-forward {
-  background-position: -336px -72px;
-}
-
-.icon-fast-forward {
-  background-position: -360px -72px;
-}
-
-.icon-step-forward {
-  background-position: -384px -72px;
-}
-
-.icon-eject {
-  background-position: -408px -72px;
-}
-
-.icon-chevron-left {
-  background-position: -432px -72px;
-}
-
-.icon-chevron-right {
-  background-position: -456px -72px;
-}
-
-.icon-plus-sign {
-  background-position: 0 -96px;
-}
-
-.icon-minus-sign {
-  background-position: -24px -96px;
-}
-
-.icon-remove-sign {
-  background-position: -48px -96px;
-}
-
-.icon-ok-sign {
-  background-position: -72px -96px;
-}
-
-.icon-question-sign {
-  background-position: -96px -96px;
-}
-
-.icon-info-sign {
-  background-position: -120px -96px;
-}
-
-.icon-screenshot {
-  background-position: -144px -96px;
-}
-
-.icon-remove-circle {
-  background-position: -168px -96px;
-}
-
-.icon-ok-circle {
-  background-position: -192px -96px;
-}
-
-.icon-ban-circle {
-  background-position: -216px -96px;
-}
-
-.icon-arrow-left {
-  background-position: -240px -96px;
-}
-
-.icon-arrow-right {
-  background-position: -264px -96px;
-}
-
-.icon-arrow-up {
-  background-position: -289px -96px;
-}
-
-.icon-arrow-down {
-  background-position: -312px -96px;
-}
-
-.icon-share-alt {
-  background-position: -336px -96px;
-}
-
-.icon-resize-full {
-  background-position: -360px -96px;
-}
-
-.icon-resize-small {
-  background-position: -384px -96px;
-}
-
-.icon-plus {
-  background-position: -408px -96px;
-}
-
-.icon-minus {
-  background-position: -433px -96px;
-}
-
-.icon-asterisk {
-  background-position: -456px -96px;
-}
-
-.icon-exclamation-sign {
-  background-position: 0 -120px;
-}
-
-.icon-gift {
-  background-position: -24px -120px;
-}
-
-.icon-leaf {
-  background-position: -48px -120px;
-}
-
-.icon-fire {
-  background-position: -72px -120px;
-}
-
-.icon-eye-open {
-  background-position: -96px -120px;
-}
-
-.icon-eye-close {
-  background-position: -120px -120px;
-}
-
-.icon-warning-sign {
-  background-position: -144px -120px;
-}
-
-.icon-plane {
-  background-position: -168px -120px;
-}
-
-.icon-calendar {
-  background-position: -192px -120px;
-}
-
-.icon-random {
-  width: 16px;
-  background-position: -216px -120px;
-}
-
-.icon-comment {
-  background-position: -240px -120px;
-}
-
-.icon-magnet {
-  background-position: -264px -120px;
-}
-
-.icon-chevron-up {
-  background-position: -288px -120px;
-}
-
-.icon-chevron-down {
-  background-position: -313px -119px;
-}
-
-.icon-retweet {
-  background-position: -336px -120px;
-}
-
-.icon-shopping-cart {
-  background-position: -360px -120px;
-}
-
-.icon-folder-close {
-  background-position: -384px -120px;
-}
-
-.icon-folder-open {
-  width: 16px;
-  background-position: -408px -120px;
-}
-
-.icon-resize-vertical {
-  background-position: -432px -119px;
-}
-
-.icon-resize-horizontal {
-  background-position: -456px -118px;
-}
-
-.icon-hdd {
-  background-position: 0 -144px;
-}
-
-.icon-bullhorn {
-  background-position: -24px -144px;
-}
-
-.icon-bell {
-  background-position: -48px -144px;
-}
-
-.icon-certificate {
-  background-position: -72px -144px;
-}
-
-.icon-thumbs-up {
-  background-position: -96px -144px;
-}
-
-.icon-thumbs-down {
-  background-position: -120px -144px;
-}
-
-.icon-hand-right {
-  background-position: -144px -144px;
-}
-
-.icon-hand-left {
-  background-position: -168px -144px;
-}
-
-.icon-hand-up {
-  background-position: -192px -144px;
-}
-
-.icon-hand-down {
-  background-position: -216px -144px;
-}
-
-.icon-circle-arrow-right {
-  background-position: -240px -144px;
-}
-
-.icon-circle-arrow-left {
-  background-position: -264px -144px;
-}
-
-.icon-circle-arrow-up {
-  background-position: -288px -144px;
-}
-
-.icon-circle-arrow-down {
-  background-position: -312px -144px;
-}
-
-.icon-globe {
-  background-position: -336px -144px;
-}
-
-.icon-wrench {
-  background-position: -360px -144px;
-}
-
-.icon-tasks {
-  background-position: -384px -144px;
-}
-
-.icon-filter {
-  background-position: -408px -144px;
-}
-
-.icon-briefcase {
-  background-position: -432px -144px;
-}
-
-.icon-fullscreen {
-  background-position: -456px -144px;
-}
-
-.dropup,
-.dropdown {
-  position: relative;
-}
-
-.dropdown-toggle {
-  *margin-bottom: -3px;
-}
-
-.dropdown-toggle:active,
-.open .dropdown-toggle {
-  outline: 0;
-}
-
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  vertical-align: top;
-  border-top: 4px solid #000000;
-  border-right: 4px solid transparent;
-  border-left: 4px solid transparent;
-  content: "";
-}
-
-.dropdown .caret {
-  margin-top: 8px;
-  margin-left: 2px;
-}
-
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  display: none;
-  float: left;
-  min-width: 160px;
-  padding: 5px 0;
-  margin: 2px 0 0;
-  list-style: none;
-  background-color: #ffffff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  *border-right-width: 2px;
-  *border-bottom-width: 2px;
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-     -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-          box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -webkit-background-clip: padding-box;
-     -moz-background-clip: padding;
-          background-clip: padding-box;
-}
-
-.dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-}
-
-.dropdown-menu .divider {
-  *width: 100%;
-  height: 1px;
-  margin: 9px 1px;
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-
-.dropdown-menu a {
-  display: block;
-  padding: 3px 20px;
-  clear: both;
-  font-weight: normal;
-  line-height: 20px;
-  color: #333333;
-  white-space: nowrap;
-}
-
-.dropdown-menu li > a:hover,
-.dropdown-menu li > a:focus,
-.dropdown-submenu:hover > a {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #0088cc;
-  background-color: #0081c2;
-  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
-  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
-  background-repeat: repeat-x;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
-}
-
-.dropdown-menu .active > a,
-.dropdown-menu .active > a:hover {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #0088cc;
-  background-color: #0081c2;
-  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
-  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
-  background-repeat: repeat-x;
-  outline: 0;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
-}
-
-.dropdown-menu .disabled > a,
-.dropdown-menu .disabled > a:hover {
-  color: #999999;
-}
-
-.dropdown-menu .disabled > a:hover {
-  text-decoration: none;
-  cursor: default;
-  background-color: transparent;
-}
-
-.open {
-  *z-index: 1000;
-}
-
-.open > .dropdown-menu {
-  display: block;
-}
-
-.pull-right > .dropdown-menu {
-  right: 0;
-  left: auto;
-}
-
-.dropup .caret,
-.navbar-fixed-bottom .dropdown .caret {
-  border-top: 0;
-  border-bottom: 4px solid #000000;
-  content: "";
-}
-
-.dropup .dropdown-menu,
-.navbar-fixed-bottom .dropdown .dropdown-menu {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 1px;
-}
-
-.dropdown-submenu {
-  position: relative;
-}
-
-.dropdown-submenu > .dropdown-menu {
-  top: 0;
-  left: 100%;
-  margin-top: -6px;
-  margin-left: -1px;
-  -webkit-border-radius: 0 6px 6px 6px;
-     -moz-border-radius: 0 6px 6px 6px;
-          border-radius: 0 6px 6px 6px;
-}
-
-.dropdown-submenu:hover > .dropdown-menu {
-  display: block;
-}
-
-.dropdown-submenu > a:after {
-  display: block;
-  float: right;
-  width: 0;
-  height: 0;
-  margin-top: 5px;
-  margin-right: -10px;
-  border-color: transparent;
-  border-left-color: #cccccc;
-  border-style: solid;
-  border-width: 5px 0 5px 5px;
-  content: " ";
-}
-
-.dropdown-submenu:hover > a:after {
-  border-left-color: #ffffff;
-}
-
-.dropdown .dropdown-menu .nav-header {
-  padding-right: 20px;
-  padding-left: 20px;
-}
-
-.typeahead {
-  margin-top: 2px;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-}
-
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border: 1px solid #e3e3e3;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-
-.well blockquote {
-  border-color: #ddd;
-  border-color: rgba(0, 0, 0, 0.15);
-}
-
-.well-large {
-  padding: 24px;
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-}
-
-.well-small {
-  padding: 9px;
-  -webkit-border-radius: 3px;
-     -moz-border-radius: 3px;
-          border-radius: 3px;
-}
-
-.fade {
-  opacity: 0;
-  -webkit-transition: opacity 0.15s linear;
-     -moz-transition: opacity 0.15s linear;
-       -o-transition: opacity 0.15s linear;
-          transition: opacity 0.15s linear;
-}
-
-.fade.in {
-  opacity: 1;
-}
-
-.collapse {
-  position: relative;
-  height: 0;
-  overflow: hidden;
-  -webkit-transition: height 0.35s ease;
-     -moz-transition: height 0.35s ease;
-       -o-transition: height 0.35s ease;
-          transition: height 0.35s ease;
-}
-
-.collapse.in {
-  height: auto;
-}
-
-.close {
-  float: right;
-  font-size: 20px;
-  font-weight: bold;
-  line-height: 20px;
-  color: #000000;
-  text-shadow: 0 1px 0 #ffffff;
-  opacity: 0.2;
-  filter: alpha(opacity=20);
-}
-
-.close:hover {
-  color: #000000;
-  text-decoration: none;
-  cursor: pointer;
-  opacity: 0.4;
-  filter: alpha(opacity=40);
-}
-
-button.close {
-  padding: 0;
-  cursor: pointer;
-  background: transparent;
-  border: 0;
-  -webkit-appearance: none;
-}
-
-.btn {
-  display: inline-block;
-  *display: inline;
-  padding: 4px 14px;
-  margin-bottom: 0;
-  *margin-left: .3em;
-  font-size: 14px;
-  line-height: 20px;
-  *line-height: 20px;
-  color: #333333;
-  text-align: center;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-  vertical-align: middle;
-  cursor: pointer;
-  background-color: #f5f5f5;
-  *background-color: #e6e6e6;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
-  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
-  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
-  background-repeat: repeat-x;
-  border: 1px solid #bbbbbb;
-  *border: 0;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
-  border-bottom-color: #a2a2a2;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
-  filter: progid:dximagetransform.microsoft.gradient(enabled=false);
-  *zoom: 1;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.btn:hover,
-.btn:active,
-.btn.active,
-.btn.disabled,
-.btn[disabled] {
-  color: #333333;
-  background-color: #e6e6e6;
-  *background-color: #d9d9d9;
-}
-
-.btn:active,
-.btn.active {
-  background-color: #cccccc \9;
-}
-
-.btn:first-child {
-  *margin-left: 0;
-}
-
-.btn:hover {
-  color: #333333;
-  text-decoration: none;
-  background-color: #e6e6e6;
-  *background-color: #d9d9d9;
-  /* Buttons in IE7 don't get borders, so darken on hover */
-
-  background-position: 0 -15px;
-  -webkit-transition: background-position 0.1s linear;
-     -moz-transition: background-position 0.1s linear;
-       -o-transition: background-position 0.1s linear;
-          transition: background-position 0.1s linear;
-}
-
-.btn:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-
-.btn.active,
-.btn:active {
-  background-color: #e6e6e6;
-  background-color: #d9d9d9 \9;
-  background-image: none;
-  outline: 0;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.btn.disabled,
-.btn[disabled] {
-  cursor: default;
-  background-color: #e6e6e6;
-  background-image: none;
-  opacity: 0.65;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-     -moz-box-shadow: none;
-          box-shadow: none;
-}
-
-.btn-large {
-  padding: 9px 14px;
-  font-size: 16px;
-  line-height: normal;
-  -webkit-border-radius: 5px;
-     -moz-border-radius: 5px;
-          border-radius: 5px;
-}
-
-.btn-large [class^="icon-"] {
-  margin-top: 2px;
-}
-
-.btn-small {
-  padding: 3px 9px;
-  font-size: 12px;
-  line-height: 18px;
-}
-
-.btn-small [class^="icon-"] {
-  margin-top: 0;
-}
-
-.btn-mini {
-  padding: 2px 6px;
-  font-size: 11px;
-  line-height: 17px;
-}
-
-.btn-block {
-  display: block;
-  width: 100%;
-  padding-right: 0;
-  padding-left: 0;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.btn-block + .btn-block {
-  margin-top: 5px;
-}
-
-input[type="submit"].btn-block,
-input[type="reset"].btn-block,
-input[type="button"].btn-block {
-  width: 100%;
-}
-
-.btn-primary.active,
-.btn-warning.active,
-.btn-danger.active,
-.btn-success.active,
-.btn-info.active,
-.btn-inverse.active {
-  color: rgba(255, 255, 255, 0.75);
-}
-
-.btn {
-  border-color: #c5c5c5;
-  border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25);
-}
-
-.btn-primary {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #006dcc;
-  *background-color: #0044cc;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
-  background-image: linear-gradient(to bottom, #0088cc, #0044cc);
-  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
-  background-repeat: repeat-x;
-  border-color: #0044cc #0044cc #002a80;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
-  filter: progid:dximagetransform.microsoft.gradient(enabled=false);
-}
-
-.btn-primary:hover,
-.btn-primary:active,
-.btn-primary.active,
-.btn-primary.disabled,
-.btn-primary[disabled] {
-  color: #ffffff;
-  background-color: #0044cc;
-  *background-color: #003bb3;
-}
-
-.btn-primary:active,
-.btn-primary.active {
-  background-color: #003399 \9;
-}
-
-.btn-warning {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #faa732;
-  *background-color: #f89406;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
-  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
-  background-image: -o-linear-gradient(top, #fbb450, #f89406);
-  background-image: linear-gradient(to bottom, #fbb450, #f89406);
-  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
-  background-repeat: repeat-x;
-  border-color: #f89406 #f89406 #ad6704;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
-  filter: progid:dximagetransform.microsoft.gradient(enabled=false);
-}
-
-.btn-warning:hover,
-.btn-warning:active,
-.btn-warning.active,
-.btn-warning.disabled,
-.btn-warning[disabled] {
-  color: #ffffff;
-  background-color: #f89406;
-  *background-color: #df8505;
-}
-
-.btn-warning:active,
-.btn-warning.active {
-  background-color: #c67605 \9;
-}
-
-.btn-danger {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #da4f49;
-  *background-color: #bd362f;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
-  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
-  background-repeat: repeat-x;
-  border-color: #bd362f #bd362f #802420;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
-  filter: progid:dximagetransform.microsoft.gradient(enabled=false);
-}
-
-.btn-danger:hover,
-.btn-danger:active,
-.btn-danger.active,
-.btn-danger.disabled,
-.btn-danger[disabled] {
-  color: #ffffff;
-  background-color: #bd362f;
-  *background-color: #a9302a;
-}
-
-.btn-danger:active,
-.btn-danger.active {
-  background-color: #942a25 \9;
-}
-
-.btn-success {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #5bb75b;
-  *background-color: #51a351;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
-  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
-  background-image: -o-linear-gradient(top, #62c462, #51a351);
-  background-image: linear-gradient(to bottom, #62c462, #51a351);
-  background-image: -moz-linear-gradient(top, #62c462, #51a351);
-  background-repeat: repeat-x;
-  border-color: #51a351 #51a351 #387038;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
-  filter: progid:dximagetransform.microsoft.gradient(enabled=false);
-}
-
-.btn-success:hover,
-.btn-success:active,
-.btn-success.active,
-.btn-success.disabled,
-.btn-success[disabled] {
-  color: #ffffff;
-  background-color: #51a351;
-  *background-color: #499249;
-}
-
-.btn-success:active,
-.btn-success.active {
-  background-color: #408140 \9;
-}
-
-.btn-info {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #49afcd;
-  *background-color: #2f96b4;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
-  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
-  background-repeat: repeat-x;
-  border-color: #2f96b4 #2f96b4 #1f6377;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
-  filter: progid:dximagetransform.microsoft.gradient(enabled=false);
-}
-
-.btn-info:hover,
-.btn-info:active,
-.btn-info.active,
-.btn-info.disabled,
-.btn-info[disabled] {
-  color: #ffffff;
-  background-color: #2f96b4;
-  *background-color: #2a85a0;
-}
-
-.btn-info:active,
-.btn-info.active {
-  background-color: #24748c \9;
-}
-
-.btn-inverse {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #363636;
-  *background-color: #222222;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
-  background-image: -webkit-linear-gradient(top, #444444, #222222);
-  background-image: -o-linear-gradient(top, #444444, #222222);
-  background-image: linear-gradient(to bottom, #444444, #222222);
-  background-image: -moz-linear-gradient(top, #444444, #222222);
-  background-repeat: repeat-x;
-  border-color: #222222 #222222 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
-  filter: progid:dximagetransform.microsoft.gradient(enabled=false);
-}
-
-.btn-inverse:hover,
-.btn-inverse:active,
-.btn-inverse.active,
-.btn-inverse.disabled,
-.btn-inverse[disabled] {
-  color: #ffffff;
-  background-color: #222222;
-  *background-color: #151515;
-}
-
-.btn-inverse:active,
-.btn-inverse.active {
-  background-color: #080808 \9;
-}
-
-button.btn,
-input[type="submit"].btn {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-
-button.btn::-moz-focus-inner,
-input[type="submit"].btn::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-
-button.btn.btn-large,
-input[type="submit"].btn.btn-large {
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-
-button.btn.btn-small,
-input[type="submit"].btn.btn-small {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-
-button.btn.btn-mini,
-input[type="submit"].btn.btn-mini {
-  *padding-top: 1px;
-  *padding-bottom: 1px;
-}
-
-.btn-link,
-.btn-link:active,
-.btn-link[disabled] {
-  background-color: transparent;
-  background-image: none;
-  -webkit-box-shadow: none;
-     -moz-box-shadow: none;
-          box-shadow: none;
-}
-
-.btn-link {
-  color: #0088cc;
-  cursor: pointer;
-  border-color: transparent;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.btn-link:hover {
-  color: #005580;
-  text-decoration: underline;
-  background-color: transparent;
-}
-
-.btn-link[disabled]:hover {
-  color: #333333;
-  text-decoration: none;
-}
-
-.btn-group {
-  position: relative;
-  *margin-left: .3em;
-  font-size: 0;
-  white-space: nowrap;
-  vertical-align: middle;
-}
-
-.btn-group:first-child {
-  *margin-left: 0;
-}
-
-.btn-group + .btn-group {
-  margin-left: 5px;
-}
-
-.btn-toolbar {
-  margin-top: 10px;
-  margin-bottom: 10px;
-  font-size: 0;
-}
-
-.btn-toolbar .btn-group {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-}
-
-.btn-toolbar .btn + .btn,
-.btn-toolbar .btn-group + .btn,
-.btn-toolbar .btn + .btn-group {
-  margin-left: 5px;
-}
-
-.btn-group > .btn {
-  position: relative;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.btn-group > .btn + .btn {
-  margin-left: -1px;
-}
-
-.btn-group > .btn,
-.btn-group > .dropdown-menu {
-  font-size: 14px;
-}
-
-.btn-group > .btn-mini {
-  font-size: 11px;
-}
-
-.btn-group > .btn-small {
-  font-size: 12px;
-}
-
-.btn-group > .btn-large {
-  font-size: 16px;
-}
-
-.btn-group > .btn:first-child {
-  margin-left: 0;
-  -webkit-border-bottom-left-radius: 4px;
-          border-bottom-left-radius: 4px;
-  -webkit-border-top-left-radius: 4px;
-          border-top-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  -moz-border-radius-topleft: 4px;
-}
-
-.btn-group > .btn:last-child,
-.btn-group > .dropdown-toggle {
-  -webkit-border-top-right-radius: 4px;
-          border-top-right-radius: 4px;
-  -webkit-border-bottom-right-radius: 4px;
-          border-bottom-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  -moz-border-radius-bottomright: 4px;
-}
-
-.btn-group > .btn.large:first-child {
-  margin-left: 0;
-  -webkit-border-bottom-left-radius: 6px;
-          border-bottom-left-radius: 6px;
-  -webkit-border-top-left-radius: 6px;
-          border-top-left-radius: 6px;
-  -moz-border-radius-bottomleft: 6px;
-  -moz-border-radius-topleft: 6px;
-}
-
-.btn-group > .btn.large:last-child,
-.btn-group > .large.dropdown-toggle {
-  -webkit-border-top-right-radius: 6px;
-          border-top-right-radius: 6px;
-  -webkit-border-bottom-right-radius: 6px;
-          border-bottom-right-radius: 6px;
-  -moz-border-radius-topright: 6px;
-  -moz-border-radius-bottomright: 6px;
-}
-
-.btn-group > .btn:hover,
-.btn-group > .btn:focus,
-.btn-group > .btn:active,
-.btn-group > .btn.active {
-  z-index: 2;
-}
-
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-
-.btn-group > .btn + .dropdown-toggle {
-  *padding-top: 5px;
-  padding-right: 8px;
-  *padding-bottom: 5px;
-  padding-left: 8px;
-  -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.btn-group > .btn-mini + .dropdown-toggle {
-  *padding-top: 2px;
-  padding-right: 5px;
-  *padding-bottom: 2px;
-  padding-left: 5px;
-}
-
-.btn-group > .btn-small + .dropdown-toggle {
-  *padding-top: 5px;
-  *padding-bottom: 4px;
-}
-
-.btn-group > .btn-large + .dropdown-toggle {
-  *padding-top: 7px;
-  padding-right: 12px;
-  *padding-bottom: 7px;
-  padding-left: 12px;
-}
-
-.btn-group.open .dropdown-toggle {
-  background-image: none;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.btn-group.open .btn.dropdown-toggle {
-  background-color: #e6e6e6;
-}
-
-.btn-group.open .btn-primary.dropdown-toggle {
-  background-color: #0044cc;
-}
-
-.btn-group.open .btn-warning.dropdown-toggle {
-  background-color: #f89406;
-}
-
-.btn-group.open .btn-danger.dropdown-toggle {
-  background-color: #bd362f;
-}
-
-.btn-group.open .btn-success.dropdown-toggle {
-  background-color: #51a351;
-}
-
-.btn-group.open .btn-info.dropdown-toggle {
-  background-color: #2f96b4;
-}
-
-.btn-group.open .btn-inverse.dropdown-toggle {
-  background-color: #222222;
-}
-
-.btn .caret {
-  margin-top: 8px;
-  margin-left: 0;
-}
-
-.btn-mini .caret,
-.btn-small .caret,
-.btn-large .caret {
-  margin-top: 6px;
-}
-
-.btn-large .caret {
-  border-top-width: 5px;
-  border-right-width: 5px;
-  border-left-width: 5px;
-}
-
-.dropup .btn-large .caret {
-  border-top: 0;
-  border-bottom: 5px solid #000000;
-}
-
-.btn-primary .caret,
-.btn-warning .caret,
-.btn-danger .caret,
-.btn-info .caret,
-.btn-success .caret,
-.btn-inverse .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-
-.btn-group-vertical {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-}
-
-.btn-group-vertical .btn {
-  display: block;
-  float: none;
-  width: 100%;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.btn-group-vertical .btn + .btn {
-  margin-top: -1px;
-  margin-left: 0;
-}
-
-.btn-group-vertical .btn:first-child {
-  -webkit-border-radius: 4px 4px 0 0;
-     -moz-border-radius: 4px 4px 0 0;
-          border-radius: 4px 4px 0 0;
-}
-
-.btn-group-vertical .btn:last-child {
-  -webkit-border-radius: 0 0 4px 4px;
-     -moz-border-radius: 0 0 4px 4px;
-          border-radius: 0 0 4px 4px;
-}
-
-.btn-group-vertical .btn-large:first-child {
-  -webkit-border-radius: 6px 6px 0 0;
-     -moz-border-radius: 6px 6px 0 0;
-          border-radius: 6px 6px 0 0;
-}
-
-.btn-group-vertical .btn-large:last-child {
-  -webkit-border-radius: 0 0 6px 6px;
-     -moz-border-radius: 0 0 6px 6px;
-          border-radius: 0 0 6px 6px;
-}
-
-.alert {
-  padding: 8px 35px 8px 14px;
-  margin-bottom: 20px;
-  color: #c09853;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  background-color: #fcf8e3;
-  border: 1px solid #fbeed5;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-}
-
-.alert h4 {
-  margin: 0;
-}
-
-.alert .close {
-  position: relative;
-  top: -2px;
-  right: -21px;
-  line-height: 20px;
-}
-
-.alert-success {
-  color: #468847;
-  background-color: #dff0d8;
-  border-color: #d6e9c6;
-}
-
-.alert-danger,
-.alert-error {
-  color: #b94a48;
-  background-color: #f2dede;
-  border-color: #eed3d7;
-}
-
-.alert-info {
-  color: #3a87ad;
-  background-color: #d9edf7;
-  border-color: #bce8f1;
-}
-
-.alert-block {
-  padding-top: 14px;
-  padding-bottom: 14px;
-}
-
-.alert-block > p,
-.alert-block > ul {
-  margin-bottom: 0;
-}
-
-.alert-block p + p {
-  margin-top: 5px;
-}
-
-.nav {
-  margin-bottom: 20px;
-  margin-left: 0;
-  list-style: none;
-}
-
-.nav > li > a {
-  display: block;
-}
-
-.nav > li > a:hover {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-
-.nav > .pull-right {
-  float: right;
-}
-
-.nav-header {
-  display: block;
-  padding: 3px 15px;
-  font-size: 11px;
-  font-weight: bold;
-  line-height: 20px;
-  color: #999999;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  text-transform: uppercase;
-}
-
-.nav li + .nav-header {
-  margin-top: 9px;
-}
-
-.nav-list {
-  padding-right: 15px;
-  padding-left: 15px;
-  margin-bottom: 0;
-}
-
-.nav-list > li > a,
-.nav-list .nav-header {
-  margin-right: -15px;
-  margin-left: -15px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-}
-
-.nav-list > li > a {
-  padding: 3px 15px;
-}
-
-.nav-list > .active > a,
-.nav-list > .active > a:hover {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
-  background-color: #0088cc;
-}
-
-.nav-list [class^="icon-"] {
-  margin-right: 2px;
-}
-
-.nav-list .divider {
-  *width: 100%;
-  height: 1px;
-  margin: 9px 1px;
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-
-.nav-tabs,
-.nav-pills {
-  *zoom: 1;
-}
-
-.nav-tabs:before,
-.nav-pills:before,
-.nav-tabs:after,
-.nav-pills:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.nav-tabs:after,
-.nav-pills:after {
-  clear: both;
-}
-
-.nav-tabs > li,
-.nav-pills > li {
-  float: left;
-}
-
-.nav-tabs > li > a,
-.nav-pills > li > a {
-  padding-right: 12px;
-  padding-left: 12px;
-  margin-right: 2px;
-  line-height: 14px;
-}
-
-.nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-
-.nav-tabs > li {
-  margin-bottom: -1px;
-}
-
-.nav-tabs > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  line-height: 20px;
-  border: 1px solid transparent;
-  -webkit-border-radius: 4px 4px 0 0;
-     -moz-border-radius: 4px 4px 0 0;
-          border-radius: 4px 4px 0 0;
-}
-
-.nav-tabs > li > a:hover {
-  border-color: #eeeeee #eeeeee #dddddd;
-}
-
-.nav-tabs > .active > a,
-.nav-tabs > .active > a:hover {
-  color: #555555;
-  cursor: default;
-  background-color: #ffffff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-}
-
-.nav-pills > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  margin-top: 2px;
-  margin-bottom: 2px;
-  -webkit-border-radius: 5px;
-     -moz-border-radius: 5px;
-          border-radius: 5px;
-}
-
-.nav-pills > .active > a,
-.nav-pills > .active > a:hover {
-  color: #ffffff;
-  background-color: #0088cc;
-}
-
-.nav-stacked > li {
-  float: none;
-}
-
-.nav-stacked > li > a {
-  margin-right: 0;
-}
-
-.nav-tabs.nav-stacked {
-  border-bottom: 0;
-}
-
-.nav-tabs.nav-stacked > li > a {
-  border: 1px solid #ddd;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.nav-tabs.nav-stacked > li:first-child > a {
-  -webkit-border-top-right-radius: 4px;
-          border-top-right-radius: 4px;
-  -webkit-border-top-left-radius: 4px;
-          border-top-left-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  -moz-border-radius-topleft: 4px;
-}
-
-.nav-tabs.nav-stacked > li:last-child > a {
-  -webkit-border-bottom-right-radius: 4px;
-          border-bottom-right-radius: 4px;
-  -webkit-border-bottom-left-radius: 4px;
-          border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  -moz-border-radius-bottomleft: 4px;
-}
-
-.nav-tabs.nav-stacked > li > a:hover {
-  z-index: 2;
-  border-color: #ddd;
-}
-
-.nav-pills.nav-stacked > li > a {
-  margin-bottom: 3px;
-}
-
-.nav-pills.nav-stacked > li:last-child > a {
-  margin-bottom: 1px;
-}
-
-.nav-tabs .dropdown-menu {
-  -webkit-border-radius: 0 0 6px 6px;
-     -moz-border-radius: 0 0 6px 6px;
-          border-radius: 0 0 6px 6px;
-}
-
-.nav-pills .dropdown-menu {
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-}
-
-.nav .dropdown-toggle .caret {
-  margin-top: 6px;
-  border-top-color: #0088cc;
-  border-bottom-color: #0088cc;
-}
-
-.nav .dropdown-toggle:hover .caret {
-  border-top-color: #005580;
-  border-bottom-color: #005580;
-}
-
-/* move down carets for tabs */
-
-.nav-tabs .dropdown-toggle .caret {
-  margin-top: 8px;
-}
-
-.nav .active .dropdown-toggle .caret {
-  border-top-color: #fff;
-  border-bottom-color: #fff;
-}
-
-.nav-tabs .active .dropdown-toggle .caret {
-  border-top-color: #555555;
-  border-bottom-color: #555555;
-}
-
-.nav > .dropdown.active > a:hover {
-  cursor: pointer;
-}
-
-.nav-tabs .open .dropdown-toggle,
-.nav-pills .open .dropdown-toggle,
-.nav > li.dropdown.open.active > a:hover {
-  color: #ffffff;
-  background-color: #999999;
-  border-color: #999999;
-}
-
-.nav li.dropdown.open .caret,
-.nav li.dropdown.open.active .caret,
-.nav li.dropdown.open a:hover .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-
-.tabs-stacked .open > a:hover {
-  border-color: #999999;
-}
-
-.tabbable {
-  *zoom: 1;
-}
-
-.tabbable:before,
-.tabbable:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.tabbable:after {
-  clear: both;
-}
-
-.tab-content {
-  overflow: auto;
-}
-
-.tabs-below > .nav-tabs,
-.tabs-right > .nav-tabs,
-.tabs-left > .nav-tabs {
-  border-bottom: 0;
-}
-
-.tab-content > .tab-pane,
-.pill-content > .pill-pane {
-  display: none;
-}
-
-.tab-content > .active,
-.pill-content > .active {
-  display: block;
-}
-
-.tabs-below > .nav-tabs {
-  border-top: 1px solid #ddd;
-}
-
-.tabs-below > .nav-tabs > li {
-  margin-top: -1px;
-  margin-bottom: 0;
-}
-
-.tabs-below > .nav-tabs > li > a {
-  -webkit-border-radius: 0 0 4px 4px;
-     -moz-border-radius: 0 0 4px 4px;
-          border-radius: 0 0 4px 4px;
-}
-
-.tabs-below > .nav-tabs > li > a:hover {
-  border-top-color: #ddd;
-  border-bottom-color: transparent;
-}
-
-.tabs-below > .nav-tabs > .active > a,
-.tabs-below > .nav-tabs > .active > a:hover {
-  border-color: transparent #ddd #ddd #ddd;
-}
-
-.tabs-left > .nav-tabs > li,
-.tabs-right > .nav-tabs > li {
-  float: none;
-}
-
-.tabs-left > .nav-tabs > li > a,
-.tabs-right > .nav-tabs > li > a {
-  min-width: 74px;
-  margin-right: 0;
-  margin-bottom: 3px;
-}
-
-.tabs-left > .nav-tabs {
-  float: left;
-  margin-right: 19px;
-  border-right: 1px solid #ddd;
-}
-
-.tabs-left > .nav-tabs > li > a {
-  margin-right: -1px;
-  -webkit-border-radius: 4px 0 0 4px;
-     -moz-border-radius: 4px 0 0 4px;
-          border-radius: 4px 0 0 4px;
-}
-
-.tabs-left > .nav-tabs > li > a:hover {
-  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
-}
-
-.tabs-left > .nav-tabs .active > a,
-.tabs-left > .nav-tabs .active > a:hover {
-  border-color: #ddd transparent #ddd #ddd;
-  *border-right-color: #ffffff;
-}
-
-.tabs-right > .nav-tabs {
-  float: right;
-  margin-left: 19px;
-  border-left: 1px solid #ddd;
-}
-
-.tabs-right > .nav-tabs > li > a {
-  margin-left: -1px;
-  -webkit-border-radius: 0 4px 4px 0;
-     -moz-border-radius: 0 4px 4px 0;
-          border-radius: 0 4px 4px 0;
-}
-
-.tabs-right > .nav-tabs > li > a:hover {
-  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
-}
-
-.tabs-right > .nav-tabs .active > a,
-.tabs-right > .nav-tabs .active > a:hover {
-  border-color: #ddd #ddd #ddd transparent;
-  *border-left-color: #ffffff;
-}
-
-.nav > .disabled > a {
-  color: #999999;
-}
-
-.nav > .disabled > a:hover {
-  text-decoration: none;
-  cursor: default;
-  background-color: transparent;
-}
-
-.navbar {
-  *position: relative;
-  *z-index: 2;
-  margin-bottom: 20px;
-  overflow: visible;
-  color: #777777;
-}
-
-.navbar-inner {
-  min-height: 40px;
-  padding-right: 20px;
-  padding-left: 20px;
-  background-color: #fafafa;
-  background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));
-  background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);
-  background-repeat: repeat-x;
-  border: 1px solid #d4d4d4;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);
-  *zoom: 1;
-  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-     -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-          box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-}
-
-.navbar-inner:before,
-.navbar-inner:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.navbar-inner:after {
-  clear: both;
-}
-
-.navbar .container {
-  width: auto;
-}
-
-.nav-collapse.collapse {
-  height: auto;
-}
-
-.navbar .brand {
-  display: block;
-  float: left;
-  padding: 10px 20px 10px;
-  margin-left: -20px;
-  font-size: 20px;
-  font-weight: 200;
-  color: #777777;
-  text-shadow: 0 1px 0 #ffffff;
-}
-
-.navbar .brand:hover {
-  text-decoration: none;
-}
-
-.navbar-text {
-  margin-bottom: 0;
-  line-height: 40px;
-}
-
-.navbar-link {
-  color: #777777;
-}
-
-.navbar-link:hover {
-  color: #333333;
-}
-
-.navbar .divider-vertical {
-  height: 40px;
-  margin: 0 9px;
-  border-right: 1px solid #ffffff;
-  border-left: 1px solid #f2f2f2;
-}
-
-.navbar .btn,
-.navbar .btn-group {
-  margin-top: 5px;
-}
-
-.navbar .btn-group .btn,
-.navbar .input-prepend .btn,
-.navbar .input-append .btn {
-  margin-top: 0;
-}
-
-.navbar-form {
-  margin-bottom: 0;
-  *zoom: 1;
-}
-
-.navbar-form:before,
-.navbar-form:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.navbar-form:after {
-  clear: both;
-}
-
-.navbar-form input,
-.navbar-form select,
-.navbar-form .radio,
-.navbar-form .checkbox {
-  margin-top: 5px;
-}
-
-.navbar-form input,
-.navbar-form select,
-.navbar-form .btn {
-  display: inline-block;
-  margin-bottom: 0;
-}
-
-.navbar-form input[type="image"],
-.navbar-form input[type="checkbox"],
-.navbar-form input[type="radio"] {
-  margin-top: 3px;
-}
-
-.navbar-form .input-append,
-.navbar-form .input-prepend {
-  margin-top: 6px;
-  white-space: nowrap;
-}
-
-.navbar-form .input-append input,
-.navbar-form .input-prepend input {
-  margin-top: 0;
-}
-
-.navbar-search {
-  position: relative;
-  float: left;
-  margin-top: 5px;
-  margin-bottom: 0;
-}
-
-.navbar-search .search-query {
-  padding: 4px 14px;
-  margin-bottom: 0;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 1;
-  -webkit-border-radius: 15px;
-     -moz-border-radius: 15px;
-          border-radius: 15px;
-}
-
-.navbar-static-top {
-  position: static;
-  width: 100%;
-  margin-bottom: 0;
-}
-
-.navbar-static-top .navbar-inner {
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  position: fixed;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-  margin-bottom: 0;
-}
-
-.navbar-fixed-top .navbar-inner,
-.navbar-static-top .navbar-inner {
-  border-width: 0 0 1px;
-}
-
-.navbar-fixed-bottom .navbar-inner {
-  border-width: 1px 0 0;
-}
-
-.navbar-fixed-top .navbar-inner,
-.navbar-fixed-bottom .navbar-inner {
-  padding-right: 0;
-  padding-left: 0;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.navbar-static-top .container,
-.navbar-fixed-top .container,
-.navbar-fixed-bottom .container {
-  width: 940px;
-}
-
-.navbar-fixed-top {
-  top: 0;
-}
-
-.navbar-fixed-top .navbar-inner,
-.navbar-static-top .navbar-inner {
-  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1);
-     -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1);
-          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1);
-}
-
-.navbar-fixed-bottom {
-  bottom: 0;
-}
-
-.navbar-fixed-bottom .navbar-inner {
-  -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);
-     -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);
-          box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);
-}
-
-.navbar .nav {
-  position: relative;
-  left: 0;
-  display: block;
-  float: left;
-  margin: 0 10px 0 0;
-}
-
-.navbar .nav.pull-right {
-  float: right;
-  margin-right: 0;
-}
-
-.navbar .nav > li {
-  float: left;
-}
-
-.navbar .nav > li > a {
-  float: none;
-  padding: 10px 15px 10px;
-  color: #777777;
-  text-decoration: none;
-  text-shadow: 0 1px 0 #ffffff;
-}
-
-.navbar .nav .dropdown-toggle .caret {
-  margin-top: 8px;
-}
-
-.navbar .nav > li > a:focus,
-.navbar .nav > li > a:hover {
-  color: #333333;
-  text-decoration: none;
-  background-color: transparent;
-}
-
-.navbar .nav > .active > a,
-.navbar .nav > .active > a:hover,
-.navbar .nav > .active > a:focus {
-  color: #555555;
-  text-decoration: none;
-  background-color: #e5e5e5;
-  -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-     -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-          box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-}
-
-.navbar .btn-navbar {
-  display: none;
-  float: right;
-  padding: 7px 10px;
-  margin-right: 5px;
-  margin-left: 5px;
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #ededed;
-  *background-color: #e5e5e5;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));
-  background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5);
-  background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-repeat: repeat-x;
-  border-color: #e5e5e5 #e5e5e5 #bfbfbf;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);
-  filter: progid:dximagetransform.microsoft.gradient(enabled=false);
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-     -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-}
-
-.navbar .btn-navbar:hover,
-.navbar .btn-navbar:active,
-.navbar .btn-navbar.active,
-.navbar .btn-navbar.disabled,
-.navbar .btn-navbar[disabled] {
-  color: #ffffff;
-  background-color: #e5e5e5;
-  *background-color: #d9d9d9;
-}
-
-.navbar .btn-navbar:active,
-.navbar .btn-navbar.active {
-  background-color: #cccccc \9;
-}
-
-.navbar .btn-navbar .icon-bar {
-  display: block;
-  width: 18px;
-  height: 2px;
-  background-color: #f5f5f5;
-  -webkit-border-radius: 1px;
-     -moz-border-radius: 1px;
-          border-radius: 1px;
-  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-     -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-          box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-}
-
-.btn-navbar .icon-bar + .icon-bar {
-  margin-top: 3px;
-}
-
-.navbar .nav > li > .dropdown-menu:before {
-  position: absolute;
-  top: -7px;
-  left: 9px;
-  display: inline-block;
-  border-right: 7px solid transparent;
-  border-bottom: 7px solid #ccc;
-  border-left: 7px solid transparent;
-  border-bottom-color: rgba(0, 0, 0, 0.2);
-  content: '';
-}
-
-.navbar .nav > li > .dropdown-menu:after {
-  position: absolute;
-  top: -6px;
-  left: 10px;
-  display: inline-block;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid #ffffff;
-  border-left: 6px solid transparent;
-  content: '';
-}
-
-.navbar-fixed-bottom .nav > li > .dropdown-menu:before {
-  top: auto;
-  bottom: -7px;
-  border-top: 7px solid #ccc;
-  border-bottom: 0;
-  border-top-color: rgba(0, 0, 0, 0.2);
-}
-
-.navbar-fixed-bottom .nav > li > .dropdown-menu:after {
-  top: auto;
-  bottom: -6px;
-  border-top: 6px solid #ffffff;
-  border-bottom: 0;
-}
-
-.navbar .nav li.dropdown.open > .dropdown-toggle,
-.navbar .nav li.dropdown.active > .dropdown-toggle,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle {
-  color: #555555;
-  background-color: #e5e5e5;
-}
-
-.navbar .nav li.dropdown > .dropdown-toggle .caret {
-  border-top-color: #777777;
-  border-bottom-color: #777777;
-}
-
-.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
-  border-top-color: #555555;
-  border-bottom-color: #555555;
-}
-
-.navbar .pull-right > li > .dropdown-menu,
-.navbar .nav > li > .dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-}
-
-.navbar .pull-right > li > .dropdown-menu:before,
-.navbar .nav > li > .dropdown-menu.pull-right:before {
-  right: 12px;
-  left: auto;
-}
-
-.navbar .pull-right > li > .dropdown-menu:after,
-.navbar .nav > li > .dropdown-menu.pull-right:after {
-  right: 13px;
-  left: auto;
-}
-
-.navbar .pull-right > li > .dropdown-menu .dropdown-menu,
-.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {
-  right: 100%;
-  left: auto;
-  margin-right: -1px;
-  margin-left: 0;
-  -webkit-border-radius: 6px 0 6px 6px;
-     -moz-border-radius: 6px 0 6px 6px;
-          border-radius: 6px 0 6px 6px;
-}
-
-.navbar-inverse {
-  color: #999999;
-}
-
-.navbar-inverse .navbar-inner {
-  background-color: #1b1b1b;
-  background-image: -moz-linear-gradient(top, #222222, #111111);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));
-  background-image: -webkit-linear-gradient(top, #222222, #111111);
-  background-image: -o-linear-gradient(top, #222222, #111111);
-  background-image: linear-gradient(to bottom, #222222, #111111);
-  background-repeat: repeat-x;
-  border-color: #252525;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);
-}
-
-.navbar-inverse .brand,
-.navbar-inverse .nav > li > a {
-  color: #999999;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-
-.navbar-inverse .brand:hover,
-.navbar-inverse .nav > li > a:hover {
-  color: #ffffff;
-}
-
-.navbar-inverse .nav > li > a:focus,
-.navbar-inverse .nav > li > a:hover {
-  color: #ffffff;
-  background-color: transparent;
-}
-
-.navbar-inverse .nav .active > a,
-.navbar-inverse .nav .active > a:hover,
-.navbar-inverse .nav .active > a:focus {
-  color: #ffffff;
-  background-color: #111111;
-}
-
-.navbar-inverse .navbar-link {
-  color: #999999;
-}
-
-.navbar-inverse .navbar-link:hover {
-  color: #ffffff;
-}
-
-.navbar-inverse .divider-vertical {
-  border-right-color: #222222;
-  border-left-color: #111111;
-}
-
-.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
-.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
-.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
-  color: #ffffff;
-  background-color: #111111;
-}
-
-.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {
-  border-top-color: #999999;
-  border-bottom-color: #999999;
-}
-
-.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,
-.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,
-.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-
-.navbar-inverse .navbar-search .search-query {
-  color: #ffffff;
-  background-color: #515151;
-  border-color: #111111;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
-     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
-          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
-  -webkit-transition: none;
-     -moz-transition: none;
-       -o-transition: none;
-          transition: none;
-}
-
-.navbar-inverse .navbar-search .search-query:-moz-placeholder {
-  color: #cccccc;
-}
-
-.navbar-inverse .navbar-search .search-query:-ms-input-placeholder {
-  color: #cccccc;
-}
-
-.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder {
-  color: #cccccc;
-}
-
-.navbar-inverse .navbar-search .search-query:focus,
-.navbar-inverse .navbar-search .search-query.focused {
-  padding: 5px 15px;
-  color: #333333;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #ffffff;
-  border: 0;
-  outline: 0;
-  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-     -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-          box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-}
-
-.navbar-inverse .btn-navbar {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #0e0e0e;
-  *background-color: #040404;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));
-  background-image: -webkit-linear-gradient(top, #151515, #040404);
-  background-image: -o-linear-gradient(top, #151515, #040404);
-  background-image: linear-gradient(to bottom, #151515, #040404);
-  background-image: -moz-linear-gradient(top, #151515, #040404);
-  background-repeat: repeat-x;
-  border-color: #040404 #040404 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);
-  filter: progid:dximagetransform.microsoft.gradient(enabled=false);
-}
-
-.navbar-inverse .btn-navbar:hover,
-.navbar-inverse .btn-navbar:active,
-.navbar-inverse .btn-navbar.active,
-.navbar-inverse .btn-navbar.disabled,
-.navbar-inverse .btn-navbar[disabled] {
-  color: #ffffff;
-  background-color: #040404;
-  *background-color: #000000;
-}
-
-.navbar-inverse .btn-navbar:active,
-.navbar-inverse .btn-navbar.active {
-  background-color: #000000 \9;
-}
-
-.breadcrumb {
-  padding: 8px 15px;
-  margin: 0 0 20px;
-  list-style: none;
-  background-color: #f5f5f5;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-}
-
-.breadcrumb li {
-  display: inline-block;
-  *display: inline;
-  text-shadow: 0 1px 0 #ffffff;
-  *zoom: 1;
-}
-
-.breadcrumb .divider {
-  padding: 0 5px;
-  color: #ccc;
-}
-
-.breadcrumb .active {
-  color: #999999;
-}
-
-.pagination {
-  height: 40px;
-  margin: 20px 0;
-}
-
-.pagination ul {
-  display: inline-block;
-  *display: inline;
-  margin-bottom: 0;
-  margin-left: 0;
-  -webkit-border-radius: 3px;
-     -moz-border-radius: 3px;
-          border-radius: 3px;
-  *zoom: 1;
-  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-          box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.pagination ul > li {
-  display: inline;
-}
-
-.pagination ul > li > a,
-.pagination ul > li > span {
-  float: left;
-  padding: 0 14px;
-  line-height: 38px;
-  text-decoration: none;
-  background-color: #ffffff;
-  border: 1px solid #dddddd;
-  border-left-width: 0;
-}
-
-.pagination ul > li > a:hover,
-.pagination ul > .active > a,
-.pagination ul > .active > span {
-  background-color: #f5f5f5;
-}
-
-.pagination ul > .active > a,
-.pagination ul > .active > span {
-  color: #999999;
-  cursor: default;
-}
-
-.pagination ul > .disabled > span,
-.pagination ul > .disabled > a,
-.pagination ul > .disabled > a:hover {
-  color: #999999;
-  cursor: default;
-  background-color: transparent;
-}
-
-.pagination ul > li:first-child > a,
-.pagination ul > li:first-child > span {
-  border-left-width: 1px;
-  -webkit-border-radius: 3px 0 0 3px;
-     -moz-border-radius: 3px 0 0 3px;
-          border-radius: 3px 0 0 3px;
-}
-
-.pagination ul > li:last-child > a,
-.pagination ul > li:last-child > span {
-  -webkit-border-radius: 0 3px 3px 0;
-     -moz-border-radius: 0 3px 3px 0;
-          border-radius: 0 3px 3px 0;
-}
-
-.pagination-centered {
-  text-align: center;
-}
-
-.pagination-right {
-  text-align: right;
-}
-
-.pager {
-  margin: 20px 0;
-  text-align: center;
-  list-style: none;
-  *zoom: 1;
-}
-
-.pager:before,
-.pager:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.pager:after {
-  clear: both;
-}
-
-.pager li {
-  display: inline;
-}
-
-.pager a,
-.pager span {
-  display: inline-block;
-  padding: 5px 14px;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  -webkit-border-radius: 15px;
-     -moz-border-radius: 15px;
-          border-radius: 15px;
-}
-
-.pager a:hover {
-  text-decoration: none;
-  background-color: #f5f5f5;
-}
-
-.pager .next a,
-.pager .next span {
-  float: right;
-}
-
-.pager .previous a {
-  float: left;
-}
-
-.pager .disabled a,
-.pager .disabled a:hover,
-.pager .disabled span {
-  color: #999999;
-  cursor: default;
-  background-color: #fff;
-}
-
-.modal-open .modal .dropdown-menu {
-  z-index: 2050;
-}
-
-.modal-open .modal .dropdown.open {
-  *z-index: 2050;
-}
-
-.modal-open .modal .popover {
-  z-index: 2060;
-}
-
-.modal-open .modal .tooltip {
-  z-index: 2080;
-}
-
-.modal-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 1040;
-  background-color: #000000;
-}
-
-.modal-backdrop.fade {
-  opacity: 0;
-}
-
-.modal-backdrop,
-.modal-backdrop.fade.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-
-.modal {
-  position: fixed;
-  top: 50%;
-  left: 50%;
-  z-index: 1050;
-  width: 560px;
-  margin: -250px 0 0 -280px;
-  overflow: auto;
-  background-color: #ffffff;
-  border: 1px solid #999;
-  border: 1px solid rgba(0, 0, 0, 0.3);
-  *border: 1px solid #999;
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-     -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-          box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -webkit-background-clip: padding-box;
-     -moz-background-clip: padding-box;
-          background-clip: padding-box;
-}
-
-.modal.fade {
-  top: -25%;
-  -webkit-transition: opacity 0.3s linear, top 0.3s ease-out;
-     -moz-transition: opacity 0.3s linear, top 0.3s ease-out;
-       -o-transition: opacity 0.3s linear, top 0.3s ease-out;
-          transition: opacity 0.3s linear, top 0.3s ease-out;
-}
-
-.modal.fade.in {
-  top: 50%;
-}
-
-.modal-header {
-  padding: 9px 15px;
-  border-bottom: 1px solid #eee;
-}
-
-.modal-header .close {
-  margin-top: 2px;
-}
-
-.modal-header h3 {
-  margin: 0;
-  line-height: 30px;
-}
-
-.modal-body {
-  max-height: 400px;
-  padding: 15px;
-  overflow-y: auto;
-}
-
-.modal-form {
-  margin-bottom: 0;
-}
-
-.modal-footer {
-  padding: 14px 15px 15px;
-  margin-bottom: 0;
-  text-align: right;
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-  -webkit-border-radius: 0 0 6px 6px;
-     -moz-border-radius: 0 0 6px 6px;
-          border-radius: 0 0 6px 6px;
-  *zoom: 1;
-  -webkit-box-shadow: inset 0 1px 0 #ffffff;
-     -moz-box-shadow: inset 0 1px 0 #ffffff;
-          box-shadow: inset 0 1px 0 #ffffff;
-}
-
-.modal-footer:before,
-.modal-footer:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.modal-footer:after {
-  clear: both;
-}
-
-.modal-footer .btn + .btn {
-  margin-bottom: 0;
-  margin-left: 5px;
-}
-
-.modal-footer .btn-group .btn + .btn {
-  margin-left: -1px;
-}
-
-.tooltip {
-  position: absolute;
-  z-index: 1030;
-  display: block;
-  padding: 5px;
-  font-size: 11px;
-  opacity: 0;
-  filter: alpha(opacity=0);
-  visibility: visible;
-}
-
-.tooltip.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-
-.tooltip.top {
-  margin-top: -3px;
-}
-
-.tooltip.right {
-  margin-left: 3px;
-}
-
-.tooltip.bottom {
-  margin-top: 3px;
-}
-
-.tooltip.left {
-  margin-left: -3px;
-}
-
-.tooltip-inner {
-  max-width: 200px;
-  padding: 3px 8px;
-  color: #ffffff;
-  text-align: center;
-  text-decoration: none;
-  background-color: #000000;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-}
-
-.tooltip-arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-}
-
-.tooltip.top .tooltip-arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-top-color: #000000;
-  border-width: 5px 5px 0;
-}
-
-.tooltip.right .tooltip-arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-right-color: #000000;
-  border-width: 5px 5px 5px 0;
-}
-
-.tooltip.left .tooltip-arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-left-color: #000000;
-  border-width: 5px 0 5px 5px;
-}
-
-.tooltip.bottom .tooltip-arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-bottom-color: #000000;
-  border-width: 0 5px 5px;
-}
-
-.popover {
-  position: absolute;
-  top: 0;
-  left: 0;
-  z-index: 1010;
-  display: none;
-  width: 236px;
-  padding: 1px;
-  background-color: #ffffff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-     -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-          box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -webkit-background-clip: padding-box;
-     -moz-background-clip: padding;
-          background-clip: padding-box;
-}
-
-.popover.top {
-  margin-bottom: 10px;
-}
-
-.popover.right {
-  margin-left: 10px;
-}
-
-.popover.bottom {
-  margin-top: 10px;
-}
-
-.popover.left {
-  margin-right: 10px;
-}
-
-.popover-title {
-  padding: 8px 14px;
-  margin: 0;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 18px;
-  background-color: #f7f7f7;
-  border-bottom: 1px solid #ebebeb;
-  -webkit-border-radius: 5px 5px 0 0;
-     -moz-border-radius: 5px 5px 0 0;
-          border-radius: 5px 5px 0 0;
-}
-
-.popover-content {
-  padding: 9px 14px;
-}
-
-.popover-content p,
-.popover-content ul,
-.popover-content ol {
-  margin-bottom: 0;
-}
-
-.popover .arrow,
-.popover .arrow:after {
-  position: absolute;
-  display: inline-block;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-}
-
-.popover .arrow:after {
-  z-index: -1;
-  content: "";
-}
-
-.popover.top .arrow {
-  bottom: -10px;
-  left: 50%;
-  margin-left: -10px;
-  border-top-color: #ffffff;
-  border-width: 10px 10px 0;
-}
-
-.popover.top .arrow:after {
-  bottom: -1px;
-  left: -11px;
-  border-top-color: rgba(0, 0, 0, 0.25);
-  border-width: 11px 11px 0;
-}
-
-.popover.right .arrow {
-  top: 50%;
-  left: -10px;
-  margin-top: -10px;
-  border-right-color: #ffffff;
-  border-width: 10px 10px 10px 0;
-}
-
-.popover.right .arrow:after {
-  bottom: -11px;
-  left: -1px;
-  border-right-color: rgba(0, 0, 0, 0.25);
-  border-width: 11px 11px 11px 0;
-}
-
-.popover.bottom .arrow {
-  top: -10px;
-  left: 50%;
-  margin-left: -10px;
-  border-bottom-color: #ffffff;
-  border-width: 0 10px 10px;
-}
-
-.popover.bottom .arrow:after {
-  top: -1px;
-  left: -11px;
-  border-bottom-color: rgba(0, 0, 0, 0.25);
-  border-width: 0 11px 11px;
-}
-
-.popover.left .arrow {
-  top: 50%;
-  right: -10px;
-  margin-top: -10px;
-  border-left-color: #ffffff;
-  border-width: 10px 0 10px 10px;
-}
-
-.popover.left .arrow:after {
-  right: -1px;
-  bottom: -11px;
-  border-left-color: rgba(0, 0, 0, 0.25);
-  border-width: 11px 0 11px 11px;
-}
-
-.thumbnails {
-  margin-left: -20px;
-  list-style: none;
-  *zoom: 1;
-}
-
-.thumbnails:before,
-.thumbnails:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.thumbnails:after {
-  clear: both;
-}
-
-.row-fluid .thumbnails {
-  margin-left: 0;
-}
-
-.thumbnails > li {
-  float: left;
-  margin-bottom: 20px;
-  margin-left: 20px;
-}
-
-.thumbnail {
-  display: block;
-  padding: 4px;
-  line-height: 20px;
-  border: 1px solid #ddd;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
-     -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
-          box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
-  -webkit-transition: all 0.2s ease-in-out;
-     -moz-transition: all 0.2s ease-in-out;
-       -o-transition: all 0.2s ease-in-out;
-          transition: all 0.2s ease-in-out;
-}
-
-a.thumbnail:hover {
-  border-color: #0088cc;
-  -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-     -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-          box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-}
-
-.thumbnail > img {
-  display: block;
-  max-width: 100%;
-  margin-right: auto;
-  margin-left: auto;
-}
-
-.thumbnail .caption {
-  padding: 9px;
-  color: #555555;
-}
-
-.label,
-.badge {
-  font-size: 11.844px;
-  font-weight: bold;
-  line-height: 14px;
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  white-space: nowrap;
-  vertical-align: baseline;
-  background-color: #999999;
-}
-
-.label {
-  padding: 1px 4px 2px;
-  -webkit-border-radius: 3px;
-     -moz-border-radius: 3px;
-          border-radius: 3px;
-}
-
-.badge {
-  padding: 1px 9px 2px;
-  -webkit-border-radius: 9px;
-     -moz-border-radius: 9px;
-          border-radius: 9px;
-}
-
-a.label:hover,
-a.badge:hover {
-  color: #ffffff;
-  text-decoration: none;
-  cursor: pointer;
-}
-
-.label-important,
-.badge-important {
-  background-color: #b94a48;
-}
-
-.label-important[href],
-.badge-important[href] {
-  background-color: #953b39;
-}
-
-.label-warning,
-.badge-warning {
-  background-color: #f89406;
-}
-
-.label-warning[href],
-.badge-warning[href] {
-  background-color: #c67605;
-}
-
-.label-success,
-.badge-success {
-  background-color: #468847;
-}
-
-.label-success[href],
-.badge-success[href] {
-  background-color: #356635;
-}
-
-.label-info,
-.badge-info {
-  background-color: #3a87ad;
-}
-
-.label-info[href],
-.badge-info[href] {
-  background-color: #2d6987;
-}
-
-.label-inverse,
-.badge-inverse {
-  background-color: #333333;
-}
-
-.label-inverse[href],
-.badge-inverse[href] {
-  background-color: #1a1a1a;
-}
-
-.btn .label,
-.btn .badge {
-  position: relative;
-  top: -1px;
-}
-
-.btn-mini .label,
-.btn-mini .badge {
-  top: 0;
-}
-
-@-webkit-keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-
-@-moz-keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-
-@-ms-keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-
-@-o-keyframes progress-bar-stripes {
-  from {
-    background-position: 0 0;
-  }
-  to {
-    background-position: 40px 0;
-  }
-}
-
-@keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-
-.progress {
-  height: 20px;
-  margin-bottom: 20px;
-  overflow: hidden;
-  background-color: #f7f7f7;
-  background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
-  background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9);
-  background-repeat: repeat-x;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-}
-
-.progress .bar {
-  float: left;
-  width: 0;
-  height: 100%;
-  font-size: 12px;
-  color: #ffffff;
-  text-align: center;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #0e90d2;
-  background-image: -moz-linear-gradient(top, #149bdf, #0480be);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
-  background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
-  background-image: -o-linear-gradient(top, #149bdf, #0480be);
-  background-image: linear-gradient(to bottom, #149bdf, #0480be);
-  background-repeat: repeat-x;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);
-  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-     -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  -webkit-transition: width 0.6s ease;
-     -moz-transition: width 0.6s ease;
-       -o-transition: width 0.6s ease;
-          transition: width 0.6s ease;
-}
-
-.progress .bar + .bar {
-  -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-     -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-          box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-}
-
-.progress-striped .bar {
-  background-color: #149bdf;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  -webkit-background-size: 40px 40px;
-     -moz-background-size: 40px 40px;
-       -o-background-size: 40px 40px;
-          background-size: 40px 40px;
-}
-
-.progress.active .bar {
-  -webkit-animation: progress-bar-stripes 2s linear infinite;
-     -moz-animation: progress-bar-stripes 2s linear infinite;
-      -ms-animation: progress-bar-stripes 2s linear infinite;
-       -o-animation: progress-bar-stripes 2s linear infinite;
-          animation: progress-bar-stripes 2s linear infinite;
-}
-
-.progress-danger .bar,
-.progress .bar-danger {
-  background-color: #dd514c;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);
-  background-repeat: repeat-x;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);
-}
-
-.progress-danger.progress-striped .bar,
-.progress-striped .bar-danger {
-  background-color: #ee5f5b;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-
-.progress-success .bar,
-.progress .bar-success {
-  background-color: #5eb95e;
-  background-image: -moz-linear-gradient(top, #62c462, #57a957);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
-  background-image: -webkit-linear-gradient(top, #62c462, #57a957);
-  background-image: -o-linear-gradient(top, #62c462, #57a957);
-  background-image: linear-gradient(to bottom, #62c462, #57a957);
-  background-repeat: repeat-x;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);
-}
-
-.progress-success.progress-striped .bar,
-.progress-striped .bar-success {
-  background-color: #62c462;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-
-.progress-info .bar,
-.progress .bar-info {
-  background-color: #4bb1cf;
-  background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: linear-gradient(to bottom, #5bc0de, #339bb9);
-  background-repeat: repeat-x;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);
-}
-
-.progress-info.progress-striped .bar,
-.progress-striped .bar-info {
-  background-color: #5bc0de;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-
-.progress-warning .bar,
-.progress .bar-warning {
-  background-color: #faa732;
-  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
-  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
-  background-image: -o-linear-gradient(top, #fbb450, #f89406);
-  background-image: linear-gradient(to bottom, #fbb450, #f89406);
-  background-repeat: repeat-x;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
-}
-
-.progress-warning.progress-striped .bar,
-.progress-striped .bar-warning {
-  background-color: #fbb450;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-
-.accordion {
-  margin-bottom: 20px;
-}
-
-.accordion-group {
-  margin-bottom: 2px;
-  border: 1px solid #e5e5e5;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-}
-
-.accordion-heading {
-  border-bottom: 0;
-}
-
-.accordion-heading .accordion-toggle {
-  display: block;
-  padding: 8px 15px;
-}
-
-.accordion-toggle {
-  cursor: pointer;
-}
-
-.accordion-inner {
-  padding: 9px 15px;
-  border-top: 1px solid #e5e5e5;
-}
-
-.carousel {
-  position: relative;
-  margin-bottom: 20px;
-  line-height: 1;
-}
-
-.carousel-inner {
-  position: relative;
-  width: 100%;
-  overflow: hidden;
-}
-
-.carousel .item {
-  position: relative;
-  display: none;
-  -webkit-transition: 0.6s ease-in-out left;
-     -moz-transition: 0.6s ease-in-out left;
-       -o-transition: 0.6s ease-in-out left;
-          transition: 0.6s ease-in-out left;
-}
-
-.carousel .item > img {
-  display: block;
-  line-height: 1;
-}
-
-.carousel .active,
-.carousel .next,
-.carousel .prev {
-  display: block;
-}
-
-.carousel .active {
-  left: 0;
-}
-
-.carousel .next,
-.carousel .prev {
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-
-.carousel .next {
-  left: 100%;
-}
-
-.carousel .prev {
-  left: -100%;
-}
-
-.carousel .next.left,
-.carousel .prev.right {
-  left: 0;
-}
-
-.carousel .active.left {
-  left: -100%;
-}
-
-.carousel .active.right {
-  left: 100%;
-}
-
-.carousel-control {
-  position: absolute;
-  top: 40%;
-  left: 15px;
-  width: 40px;
-  height: 40px;
-  margin-top: -20px;
-  font-size: 60px;
-  font-weight: 100;
-  line-height: 30px;
-  color: #ffffff;
-  text-align: center;
-  background: #222222;
-  border: 3px solid #ffffff;
-  -webkit-border-radius: 23px;
-     -moz-border-radius: 23px;
-          border-radius: 23px;
-  opacity: 0.5;
-  filter: alpha(opacity=50);
-}
-
-.carousel-control.right {
-  right: 15px;
-  left: auto;
-}
-
-.carousel-control:hover {
-  color: #ffffff;
-  text-decoration: none;
-  opacity: 0.9;
-  filter: alpha(opacity=90);
-}
-
-.carousel-caption {
-  position: absolute;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  padding: 15px;
-  background: #333333;
-  background: rgba(0, 0, 0, 0.75);
-}
-
-.carousel-caption h4,
-.carousel-caption p {
-  line-height: 20px;
-  color: #ffffff;
-}
-
-.carousel-caption h4 {
-  margin: 0 0 5px;
-}
-
-.carousel-caption p {
-  margin-bottom: 0;
-}
-
-.hero-unit {
-  padding: 60px;
-  margin-bottom: 30px;
-  background-color: #eeeeee;
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-}
-
-.hero-unit h1 {
-  margin-bottom: 0;
-  font-size: 60px;
-  line-height: 1;
-  letter-spacing: -1px;
-  color: inherit;
-}
-
-.hero-unit p {
-  font-size: 18px;
-  font-weight: 200;
-  line-height: 30px;
-  color: inherit;
-}
-
-.pull-right {
-  float: right;
-}
-
-.pull-left {
-  float: left;
-}
-
-.hide {
-  display: none;
-}
-
-.show {
-  display: block;
-}
-
-.invisible {
-  visibility: hidden;
-}
-
-.affix {
-  position: fixed;
-}
diff --git a/examples/moviefun-plus/src/main/webapp/assets/css/bootstrap.min.css b/examples/moviefun-plus/src/main/webapp/assets/css/bootstrap.min.css
deleted file mode 100644
index 31d8b96..0000000
--- a/examples/moviefun-plus/src/main/webapp/assets/css/bootstrap.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * Bootstrap v2.1.1
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- */article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:hover{color:#005580;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}[class*="span"].hide,.row-fluid [class*="span"].hide{display:none}[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:bold}em{font-style:italic}cite{font-style:normal}.muted{color:#999}.text-warning{color:#c09853}.text-error{color:#b94a48}.text-info{color:#3a87ad}.text-success{color:#468847}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:1;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}h1{font-size:36px;line-height:40px}h2{font-size:30px;line-height:40px}h3{font-size:24px;line-height:40px}h4{font-size:18px;line-height:20px}h5{font-size:14px;line-height:20px}h6{font-size:12px;line-height:20px}h1 small{font-size:24px}h2 small{font-size:18px}h3 small{font-size:14px}h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}ul,ol{padding:0;margin:0 0 10px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:20px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}dl{margin-bottom:20px}dt,dd{line-height:20px}dt{font-weight:bold}dd{margin-left:10px}.dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;line-height:0;content:""}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:25px}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:9px;font-size:14px;line-height:20px;color:#555;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}input,textarea,.uneditable-input{width:206px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal;cursor:pointer}input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px}select{width:220px;background-color:#fff;border:1px solid #ccc}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.radio,.checkbox{min-height:18px;padding-left:18px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:926px}input.span11,textarea.span11,.uneditable-input.span11{width:846px}input.span10,textarea.span10,.uneditable-input.span10{width:766px}input.span9,textarea.span9,.uneditable-input.span9{width:686px}input.span8,textarea.span8,.uneditable-input.span8{width:606px}input.span7,textarea.span7,.uneditable-input.span7{width:526px}input.span6,textarea.span6,.uneditable-input.span6{width:446px}input.span5,textarea.span5,.uneditable-input.span5{width:366px}input.span4,textarea.span4,.uneditable-input.span4{width:286px}input.span3,textarea.span3,.uneditable-input.span3{width:206px}input.span2,textarea.span2,.uneditable-input.span2{width:126px}input.span1,textarea.span1,.uneditable-input.span1{width:46px}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*="span"]{float:left}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning>label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error>label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48}.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success>label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847}.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}.control-group.info>label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad}.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3}.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}input:focus:required:invalid,textarea:focus:required:invalid,select:focus:required:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:required:invalid:focus,textarea:focus:required:invalid:focus,select:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;line-height:0;content:""}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{margin-bottom:5px;font-size:0;white-space:nowrap}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;font-size:14px;vertical-align:top;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-append .add-on,.input-append .btn{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;line-height:0;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block{margin-top:10px}.form-horizontal .form-actions{padding-left:180px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child,.table-bordered tfoot:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child,.table-bordered tfoot:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topleft:4px}.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9}.table-hover tbody tr:hover td,.table-hover tbody tr:hover th{background-color:#f5f5f5}table [class*=span],.row-fluid table [class*=span]{display:table-cell;float:none;margin-left:0}.table .span1{float:none;width:44px;margin-left:0}.table .span2{float:none;width:124px;margin-left:0}.table .span3{float:none;width:204px;margin-left:0}.table .span4{float:none;width:284px;margin-left:0}.table .span5{float:none;width:364px;margin-left:0}.table .span6{float:none;width:444px;margin-left:0}.table .span7{float:none;width:524px;margin-left:0}.table .span8{float:none;width:604px;margin-left:0}.table .span9{float:none;width:684px;margin-left:0}.table .span10{float:none;width:764px;margin-left:0}.table .span11{float:none;width:844px;margin-left:0}.table .span12{float:none;width:924px;margin-left:0}.table .span13{float:none;width:1004px;margin-left:0}.table .span14{float:none;width:1084px;margin-left:0}.table .span15{float:none;width:1164px;margin-left:0}.table .span16{float:none;width:1244px;margin-left:0}.table .span17{float:none;width:1324px;margin-left:0}.table .span18{float:none;width:1404px;margin-left:0}.table .span19{float:none;width:1484px;margin-left:0}.table .span20{float:none;width:1564px;margin-left:0}.table .span21{float:none;width:1644px;margin-left:0}.table .span22{float:none;width:1724px;margin-left:0}.table .span23{float:none;width:1804px;margin-left:0}.table .span24{float:none;width:1884px;margin-left:0}.table tbody tr.success td{background-color:#dff0d8}.table tbody tr.error td{background-color:#f2dede}.table tbody tr.warning td{background-color:#fcf8e3}.table tbody tr.info td{background-color:#d9edf7}.table-hover tbody tr.success:hover td{background-color:#d0e9c6}.table-hover tbody tr.error:hover td{background-color:#ebcccc}.table-hover tbody tr.warning:hover td{background-color:#faf2cc}.table-hover tbody tr.info:hover td{background-color:#c4e3f3}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}.icon-white,.nav-tabs>.active>a>[class^="icon-"],.nav-tabs>.active>a>[class*=" icon-"],.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu li>a:hover,.dropdown-menu li>a:focus,.dropdown-submenu:hover>a{color:#fff;text-decoration:none;background-color:#08c;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#fff;text-decoration:none;background-color:#08c;background-color:#0081c2;background-image:linear-gradient(to bottom,#08c,#0077b3);background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-repeat:repeat-x;outline:0;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu .disabled>a,.dropdown-menu .disabled>a:hover{color:#999}.dropdown-menu .disabled>a:hover{text-decoration:none;cursor:default;background-color:transparent}.open{*z-index:1000}.open>.dropdown-menu{display:block}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#ccc;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 14px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;*line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #bbb;*border:0;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-bottom-color:#a2a2a2;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover{color:#333;text-decoration:none;background-color:#e6e6e6;*background-color:#d9d9d9;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-color:#e6e6e6;background-color:#d9d9d9 \9;background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-color:#e6e6e6;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:9px 14px;font-size:16px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.btn-large [class^="icon-"]{margin-top:2px}.btn-small{padding:3px 9px;font-size:12px;line-height:18px}.btn-small [class^="icon-"]{margin-top:0}.btn-mini{padding:2px 6px;font-size:11px;line-height:17px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn{border-color:#c5c5c5;border-color:rgba(0,0,0,0.15) rgba(0,0,0,0.15) rgba(0,0,0,0.25)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#006dcc;*background-color:#04c;background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-image:-moz-linear-gradient(top,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}.btn-primary:active,.btn-primary.active{background-color:#039 \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;*background-color:#f89406;background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;*background-color:#bd362f;background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffbd362f',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;*background-color:#51a351;background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-image:-moz-linear-gradient(top,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff51a351',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2f96b4',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#363636;*background-color:#222;background-image:-webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));background-image:-webkit-linear-gradient(top,#444,#222);background-image:-o-linear-gradient(top,#444,#222);background-image:linear-gradient(to bottom,#444,#222);background-image:-moz-linear-gradient(top,#444,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff444444',endColorstr='#ff222222',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{color:#08c;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover{color:#005580;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover{color:#333;text-decoration:none}.btn-group{position:relative;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0}.btn-toolbar .btn-group{display:inline-block;*display:inline;*zoom:1}.btn-toolbar .btn+.btn,.btn-toolbar .btn-group+.btn,.btn-toolbar .btn+.btn-group{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu{font-size:14px}.btn-group>.btn-mini{font-size:11px}.btn-group>.btn-small{font-size:12px}.btn-group>.btn-large{font-size:16px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-mini .caret,.btn-small .caret,.btn-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.dropup .btn-large .caret{border-top:0;border-bottom:5px solid #000}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical .btn{display:block;float:none;width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical .btn+.btn{margin-top:-1px;margin-left:0}.btn-group-vertical .btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical .btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical .btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical .btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;color:#c09853;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:20px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;line-height:0;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.nav-tabs.nav-stacked>li>a:hover{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;line-height:0;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible;color:#777}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff2f2f2',GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065)}.navbar-inner:before,.navbar-inner:after{display:table;line-height:0;content:""}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto}.navbar .brand{display:block;float:left;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.navbar .brand:hover{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px}.navbar-link{color:#777}.navbar-link:hover{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-right:1px solid #fff;border-left:1px solid #f2f2f2}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:6px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;width:100%;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.1),0 1px 10px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.1),0 1px 10px rgba(0,0,0,0.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.1),0 1px 10px rgba(0,0,0,0.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,0.1),0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 0 rgba(0,0,0,0.1),0 -1px 10px rgba(0,0,0,0.1);box-shadow:inset 0 1px 0 rgba(0,0,0,0.1),0 -1px 10px rgba(0,0,0,0.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#333;text-decoration:none;background-color:transparent}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ededed;*background-color:#e5e5e5;background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e5e5e5));background-image:-webkit-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-o-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:linear-gradient(to bottom,#f2f2f2,#e5e5e5);background-image:-moz-linear-gradient(top,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffe5e5e5',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#ccc \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{color:#555;background-color:#e5e5e5}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777}.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{right:13px;left:auto}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse{color:#999}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top,#222,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#222),to(#111));background-image:-webkit-linear-gradient(top,#222,#111);background-image:-o-linear-gradient(top,#222,#111);background-image:linear-gradient(to bottom,#222,#111);background-repeat:repeat-x;border-color:#252525;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff111111',GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover{color:#fff}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#222;border-left-color:#111}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#111}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e0e0e;*background-color:#040404;background-image:-webkit-gradient(linear,0 0,0 100%,from(#151515),to(#040404));background-image:-webkit-linear-gradient(top,#151515,#040404);background-image:-o-linear-gradient(top,#151515,#040404);background-image:linear-gradient(to bottom,#151515,#040404);background-image:-moz-linear-gradient(top,#151515,#040404);background-repeat:repeat-x;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff151515',endColorstr='#ff040404',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \9}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb .divider{padding:0 5px;color:#ccc}.breadcrumb .active{color:#999}.pagination{height:40px;margin:20px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:0 14px;line-height:38px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>li>a:hover,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover{color:#999;cursor:default;background-color:transparent}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pager{margin:20px 0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager a,.pager span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager a:hover{text-decoration:none;background-color:#f5f5f5}.pager .next a,.pager .next span{float:right}.pager .previous a{float:left}.pager .disabled a,.pager .disabled a:hover,.pager .disabled span{color:#999;cursor:default;background-color:#fff}.modal-open .modal .dropdown-menu{z-index:2050}.modal-open .modal .dropdown.open{*z-index:2050}.modal-open .modal .popover{z-index:2060}.modal-open .modal .tooltip{z-index:2080}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:50%;left:50%;z-index:1050;width:560px;margin:-250px 0 0 -280px;overflow:auto;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:50%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.tooltip{position:absolute;z-index:1030;display:block;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{margin-top:-3px}.tooltip.right{margin-left:3px}.tooltip.bottom{margin-top:3px}.tooltip.left{margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;width:236px;padding:1px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.top{margin-bottom:10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-right:10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0}.popover .arrow,.popover .arrow:after{position:absolute;display:inline-block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow:after{z-index:-1;content:""}.popover.top .arrow{bottom:-10px;left:50%;margin-left:-10px;border-top-color:#fff;border-width:10px 10px 0}.popover.top .arrow:after{bottom:-1px;left:-11px;border-top-color:rgba(0,0,0,0.25);border-width:11px 11px 0}.popover.right .arrow{top:50%;left:-10px;margin-top:-10px;border-right-color:#fff;border-width:10px 10px 10px 0}.popover.right .arrow:after{bottom:-11px;left:-1px;border-right-color:rgba(0,0,0,0.25);border-width:11px 11px 11px 0}.popover.bottom .arrow{top:-10px;left:50%;margin-left:-10px;border-bottom-color:#fff;border-width:0 10px 10px}.popover.bottom .arrow:after{top:-1px;left:-11px;border-bottom-color:rgba(0,0,0,0.25);border-width:0 11px 11px}.popover.left .arrow{top:50%;right:-10px;margin-top:-10px;border-left-color:#fff;border-width:10px 0 10px 10px}.popover.left .arrow:after{right:-1px;bottom:-11px;border-left-color:rgba(0,0,0,0.25);border-width:11px 0 11px 11px}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;line-height:0;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:hover{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#555}.label,.badge{font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{padding:1px 4px 2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding:1px 9px 2px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}a.label:hover,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}.btn .label,.btn .badge{position:relative;top:-1px}.btn-mini .label,.btn-mini .badge{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff149bdf',endColorstr='#ff0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffc43c35',GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff57a957',GradientType=0)}.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff339bb9',GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0)}.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:20px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:20px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel .item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel .item>img{display:block;line-height:1}.carousel .active,.carousel .next,.carousel .prev{display:block}.carousel .active{left:0}.carousel .next,.carousel .prev{position:absolute;top:0;width:100%}.carousel .next{left:100%}.carousel .prev{left:-100%}.carousel .next.left,.carousel .prev.right{left:0}.carousel .active.left{left:-100%}.carousel .active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{line-height:20px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit p{font-size:18px;font-weight:200;line-height:30px;color:inherit}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed}
diff --git a/examples/moviefun-plus/src/main/webapp/assets/css/movie.css b/examples/moviefun-plus/src/main/webapp/assets/css/movie.css
deleted file mode 100644
index 8e024aa..0000000
--- a/examples/moviefun-plus/src/main/webapp/assets/css/movie.css
+++ /dev/null
@@ -1,7 +0,0 @@
-.movie-input-form {
-	padding: 20px;
-	background-color: #EEE;
-	-webkit-border-radius: 6px;
-	-moz-border-radius: 6px;
-	border-radius: 6px;
-}
diff --git a/examples/moviefun-plus/src/main/webapp/assets/img/glyphicons-halflings-white.png b/examples/moviefun-plus/src/main/webapp/assets/img/glyphicons-halflings-white.png
deleted file mode 100644
index 3bf6484..0000000
--- a/examples/moviefun-plus/src/main/webapp/assets/img/glyphicons-halflings-white.png
+++ /dev/null
Binary files differ
diff --git a/examples/moviefun-plus/src/main/webapp/assets/img/glyphicons-halflings.png b/examples/moviefun-plus/src/main/webapp/assets/img/glyphicons-halflings.png
deleted file mode 100644
index a996999..0000000
--- a/examples/moviefun-plus/src/main/webapp/assets/img/glyphicons-halflings.png
+++ /dev/null
Binary files differ
diff --git a/examples/moviefun-plus/src/main/webapp/assets/js/bootstrap.js b/examples/moviefun-plus/src/main/webapp/assets/js/bootstrap.js
deleted file mode 100644
index f73fcb8..0000000
--- a/examples/moviefun-plus/src/main/webapp/assets/js/bootstrap.js
+++ /dev/null
@@ -1,2027 +0,0 @@
-/* ===================================================
- * bootstrap-transition.js v2.1.1
- * http://twitter.github.com/bootstrap/javascript.html#transitions
- * ===================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed 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.
- * ========================================================== */
-
-
-!function ($) {
-
-  $(function () {
-
-    "use strict"; // jshint ;_;
-
-
-    /* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
-     * ======================================================= */
-
-    $.support.transition = (function () {
-
-      var transitionEnd = (function () {
-
-        var el = document.createElement('bootstrap')
-          , transEndEventNames = {
-               'WebkitTransition' : 'webkitTransitionEnd'
-            ,  'MozTransition'    : 'transitionend'
-            ,  'OTransition'      : 'oTransitionEnd otransitionend'
-            ,  'transition'       : 'transitionend'
-            }
-          , name
-
-        for (name in transEndEventNames){
-          if (el.style[name] !== undefined) {
-            return transEndEventNames[name]
-          }
-        }
-
-      }())
-
-      return transitionEnd && {
-        end: transitionEnd
-      }
-
-    })()
-
-  })
-
-}(window.jQuery);/* ==========================================================
- * bootstrap-alert.js v2.1.1
- * http://twitter.github.com/bootstrap/javascript.html#alerts
- * ==========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed 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.
- * ========================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* ALERT CLASS DEFINITION
-  * ====================== */
-
-  var dismiss = '[data-dismiss="alert"]'
-    , Alert = function (el) {
-        $(el).on('click', dismiss, this.close)
-      }
-
-  Alert.prototype.close = function (e) {
-    var $this = $(this)
-      , selector = $this.attr('data-target')
-      , $parent
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
-    }
-
-    $parent = $(selector)
-
-    e && e.preventDefault()
-
-    $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
-
-    $parent.trigger(e = $.Event('close'))
-
-    if (e.isDefaultPrevented()) return
-
-    $parent.removeClass('in')
-
-    function removeElement() {
-      $parent
-        .trigger('closed')
-        .remove()
-    }
-
-    $.support.transition && $parent.hasClass('fade') ?
-      $parent.on($.support.transition.end, removeElement) :
-      removeElement()
-  }
-
-
- /* ALERT PLUGIN DEFINITION
-  * ======================= */
-
-  $.fn.alert = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('alert')
-      if (!data) $this.data('alert', (data = new Alert(this)))
-      if (typeof option == 'string') data[option].call($this)
-    })
-  }
-
-  $.fn.alert.Constructor = Alert
-
-
- /* ALERT DATA-API
-  * ============== */
-
-  $(function () {
-    $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
-  })
-
-}(window.jQuery);/* ============================================================
- * bootstrap-button.js v2.1.1
- * http://twitter.github.com/bootstrap/javascript.html#buttons
- * ============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed 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.
- * ============================================================ */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* BUTTON PUBLIC CLASS DEFINITION
-  * ============================== */
-
-  var Button = function (element, options) {
-    this.$element = $(element)
-    this.options = $.extend({}, $.fn.button.defaults, options)
-  }
-
-  Button.prototype.setState = function (state) {
-    var d = 'disabled'
-      , $el = this.$element
-      , data = $el.data()
-      , val = $el.is('input') ? 'val' : 'html'
-
-    state = state + 'Text'
-    data.resetText || $el.data('resetText', $el[val]())
-
-    $el[val](data[state] || this.options[state])
-
-    // push to event loop to allow forms to submit
-    setTimeout(function () {
-      state == 'loadingText' ?
-        $el.addClass(d).attr(d, d) :
-        $el.removeClass(d).removeAttr(d)
-    }, 0)
-  }
-
-  Button.prototype.toggle = function () {
-    var $parent = this.$element.closest('[data-toggle="buttons-radio"]')
-
-    $parent && $parent
-      .find('.active')
-      .removeClass('active')
-
-    this.$element.toggleClass('active')
-  }
-
-
- /* BUTTON PLUGIN DEFINITION
-  * ======================== */
-
-  $.fn.button = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('button')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('button', (data = new Button(this, options)))
-      if (option == 'toggle') data.toggle()
-      else if (option) data.setState(option)
-    })
-  }
-
-  $.fn.button.defaults = {
-    loadingText: 'loading...'
-  }
-
-  $.fn.button.Constructor = Button
-
-
- /* BUTTON DATA-API
-  * =============== */
-
-  $(function () {
-    $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
-      var $btn = $(e.target)
-      if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
-      $btn.button('toggle')
-    })
-  })
-
-}(window.jQuery);/* ==========================================================
- * bootstrap-carousel.js v2.1.1
- * http://twitter.github.com/bootstrap/javascript.html#carousel
- * ==========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed 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.
- * ========================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* CAROUSEL CLASS DEFINITION
-  * ========================= */
-
-  var Carousel = function (element, options) {
-    this.$element = $(element)
-    this.options = options
-    this.options.slide && this.slide(this.options.slide)
-    this.options.pause == 'hover' && this.$element
-      .on('mouseenter', $.proxy(this.pause, this))
-      .on('mouseleave', $.proxy(this.cycle, this))
-  }
-
-  Carousel.prototype = {
-
-    cycle: function (e) {
-      if (!e) this.paused = false
-      this.options.interval
-        && !this.paused
-        && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
-      return this
-    }
-
-  , to: function (pos) {
-      var $active = this.$element.find('.item.active')
-        , children = $active.parent().children()
-        , activePos = children.index($active)
-        , that = this
-
-      if (pos > (children.length - 1) || pos < 0) return
-
-      if (this.sliding) {
-        return this.$element.one('slid', function () {
-          that.to(pos)
-        })
-      }
-
-      if (activePos == pos) {
-        return this.pause().cycle()
-      }
-
-      return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
-    }
-
-  , pause: function (e) {
-      if (!e) this.paused = true
-      if (this.$element.find('.next, .prev').length && $.support.transition.end) {
-        this.$element.trigger($.support.transition.end)
-        this.cycle()
-      }
-      clearInterval(this.interval)
-      this.interval = null
-      return this
-    }
-
-  , next: function () {
-      if (this.sliding) return
-      return this.slide('next')
-    }
-
-  , prev: function () {
-      if (this.sliding) return
-      return this.slide('prev')
-    }
-
-  , slide: function (type, next) {
-      var $active = this.$element.find('.item.active')
-        , $next = next || $active[type]()
-        , isCycling = this.interval
-        , direction = type == 'next' ? 'left' : 'right'
-        , fallback  = type == 'next' ? 'first' : 'last'
-        , that = this
-        , e = $.Event('slide', {
-            relatedTarget: $next[0]
-          })
-
-      this.sliding = true
-
-      isCycling && this.pause()
-
-      $next = $next.length ? $next : this.$element.find('.item')[fallback]()
-
-      if ($next.hasClass('active')) return
-
-      if ($.support.transition && this.$element.hasClass('slide')) {
-        this.$element.trigger(e)
-        if (e.isDefaultPrevented()) return
-        $next.addClass(type)
-        $next[0].offsetWidth // force reflow
-        $active.addClass(direction)
-        $next.addClass(direction)
-        this.$element.one($.support.transition.end, function () {
-          $next.removeClass([type, direction].join(' ')).addClass('active')
-          $active.removeClass(['active', direction].join(' '))
-          that.sliding = false
-          setTimeout(function () { that.$element.trigger('slid') }, 0)
-        })
-      } else {
-        this.$element.trigger(e)
-        if (e.isDefaultPrevented()) return
-        $active.removeClass('active')
-        $next.addClass('active')
-        this.sliding = false
-        this.$element.trigger('slid')
-      }
-
-      isCycling && this.cycle()
-
-      return this
-    }
-
-  }
-
-
- /* CAROUSEL PLUGIN DEFINITION
-  * ========================== */
-
-  $.fn.carousel = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('carousel')
-        , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option)
-        , action = typeof option == 'string' ? option : options.slide
-      if (!data) $this.data('carousel', (data = new Carousel(this, options)))
-      if (typeof option == 'number') data.to(option)
-      else if (action) data[action]()
-      else if (options.interval) data.cycle()
-    })
-  }
-
-  $.fn.carousel.defaults = {
-    interval: 5000
-  , pause: 'hover'
-  }
-
-  $.fn.carousel.Constructor = Carousel
-
-
- /* CAROUSEL DATA-API
-  * ================= */
-
-  $(function () {
-    $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) {
-      var $this = $(this), href
-        , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
-        , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data())
-      $target.carousel(options)
-      e.preventDefault()
-    })
-  })
-
-}(window.jQuery);/* =============================================================
- * bootstrap-collapse.js v2.1.1
- * http://twitter.github.com/bootstrap/javascript.html#collapse
- * =============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed 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.
- * ============================================================ */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* COLLAPSE PUBLIC CLASS DEFINITION
-  * ================================ */
-
-  var Collapse = function (element, options) {
-    this.$element = $(element)
-    this.options = $.extend({}, $.fn.collapse.defaults, options)
-
-    if (this.options.parent) {
-      this.$parent = $(this.options.parent)
-    }
-
-    this.options.toggle && this.toggle()
-  }
-
-  Collapse.prototype = {
-
-    constructor: Collapse
-
-  , dimension: function () {
-      var hasWidth = this.$element.hasClass('width')
-      return hasWidth ? 'width' : 'height'
-    }
-
-  , show: function () {
-      var dimension
-        , scroll
-        , actives
-        , hasData
-
-      if (this.transitioning) return
-
-      dimension = this.dimension()
-      scroll = $.camelCase(['scroll', dimension].join('-'))
-      actives = this.$parent && this.$parent.find('> .accordion-group > .in')
-
-      if (actives && actives.length) {
-        hasData = actives.data('collapse')
-        if (hasData && hasData.transitioning) return
-        actives.collapse('hide')
-        hasData || actives.data('collapse', null)
-      }
-
-      this.$element[dimension](0)
-      this.transition('addClass', $.Event('show'), 'shown')
-      $.support.transition && this.$element[dimension](this.$element[0][scroll])
-    }
-
-  , hide: function () {
-      var dimension
-      if (this.transitioning) return
-      dimension = this.dimension()
-      this.reset(this.$element[dimension]())
-      this.transition('removeClass', $.Event('hide'), 'hidden')
-      this.$element[dimension](0)
-    }
-
-  , reset: function (size) {
-      var dimension = this.dimension()
-
-      this.$element
-        .removeClass('collapse')
-        [dimension](size || 'auto')
-        [0].offsetWidth
-
-      this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
-
-      return this
-    }
-
-  , transition: function (method, startEvent, completeEvent) {
-      var that = this
-        , complete = function () {
-            if (startEvent.type == 'show') that.reset()
-            that.transitioning = 0
-            that.$element.trigger(completeEvent)
-          }
-
-      this.$element.trigger(startEvent)
-
-      if (startEvent.isDefaultPrevented()) return
-
-      this.transitioning = 1
-
-      this.$element[method]('in')
-
-      $.support.transition && this.$element.hasClass('collapse') ?
-        this.$element.one($.support.transition.end, complete) :
-        complete()
-    }
-
-  , toggle: function () {
-      this[this.$element.hasClass('in') ? 'hide' : 'show']()
-    }
-
-  }
-
-
- /* COLLAPSIBLE PLUGIN DEFINITION
-  * ============================== */
-
-  $.fn.collapse = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('collapse')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('collapse', (data = new Collapse(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.collapse.defaults = {
-    toggle: true
-  }
-
-  $.fn.collapse.Constructor = Collapse
-
-
- /* COLLAPSIBLE DATA-API
-  * ==================== */
-
-  $(function () {
-    $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
-      var $this = $(this), href
-        , target = $this.attr('data-target')
-          || e.preventDefault()
-          || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
-        , option = $(target).data('collapse') ? 'toggle' : $this.data()
-      $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
-      $(target).collapse(option)
-    })
-  })
-
-}(window.jQuery);/* ============================================================
- * bootstrap-dropdown.js v2.1.1
- * http://twitter.github.com/bootstrap/javascript.html#dropdowns
- * ============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed 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.
- * ============================================================ */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* DROPDOWN CLASS DEFINITION
-  * ========================= */
-
-  var toggle = '[data-toggle=dropdown]'
-    , Dropdown = function (element) {
-        var $el = $(element).on('click.dropdown.data-api', this.toggle)
-        $('html').on('click.dropdown.data-api', function () {
-          $el.parent().removeClass('open')
-        })
-      }
-
-  Dropdown.prototype = {
-
-    constructor: Dropdown
-
-  , toggle: function (e) {
-      var $this = $(this)
-        , $parent
-        , isActive
-
-      if ($this.is('.disabled, :disabled')) return
-
-      $parent = getParent($this)
-
-      isActive = $parent.hasClass('open')
-
-      clearMenus()
-
-      if (!isActive) {
-        $parent.toggleClass('open')
-        $this.focus()
-      }
-
-      return false
-    }
-
-  , keydown: function (e) {
-      var $this
-        , $items
-        , $active
-        , $parent
-        , isActive
-        , index
-
-      if (!/(38|40|27)/.test(e.keyCode)) return
-
-      $this = $(this)
-
-      e.preventDefault()
-      e.stopPropagation()
-
-      if ($this.is('.disabled, :disabled')) return
-
-      $parent = getParent($this)
-
-      isActive = $parent.hasClass('open')
-
-      if (!isActive || (isActive && e.keyCode == 27)) return $this.click()
-
-      $items = $('[role=menu] li:not(.divider) a', $parent)
-
-      if (!$items.length) return
-
-      index = $items.index($items.filter(':focus'))
-
-      if (e.keyCode == 38 && index > 0) index--                                        // up
-      if (e.keyCode == 40 && index < $items.length - 1) index++                        // down
-      if (!~index) index = 0
-
-      $items
-        .eq(index)
-        .focus()
-    }
-
-  }
-
-  function clearMenus() {
-    getParent($(toggle))
-      .removeClass('open')
-  }
-
-  function getParent($this) {
-    var selector = $this.attr('data-target')
-      , $parent
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
-    }
-
-    $parent = $(selector)
-    $parent.length || ($parent = $this.parent())
-
-    return $parent
-  }
-
-
-  /* DROPDOWN PLUGIN DEFINITION
-   * ========================== */
-
-  $.fn.dropdown = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('dropdown')
-      if (!data) $this.data('dropdown', (data = new Dropdown(this)))
-      if (typeof option == 'string') data[option].call($this)
-    })
-  }
-
-  $.fn.dropdown.Constructor = Dropdown
-
-
-  /* APPLY TO STANDARD DROPDOWN ELEMENTS
-   * =================================== */
-
-  $(function () {
-    $('html')
-      .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus)
-    $('body')
-      .on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
-      .on('click.dropdown.data-api touchstart.dropdown.data-api'  , toggle, Dropdown.prototype.toggle)
-      .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
-  })
-
-}(window.jQuery);/* =========================================================
- * bootstrap-modal.js v2.1.1
- * http://twitter.github.com/bootstrap/javascript.html#modals
- * =========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed 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.
- * ========================================================= */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* MODAL CLASS DEFINITION
-  * ====================== */
-
-  var Modal = function (element, options) {
-    this.options = options
-    this.$element = $(element)
-      .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
-    this.options.remote && this.$element.find('.modal-body').load(this.options.remote)
-  }
-
-  Modal.prototype = {
-
-      constructor: Modal
-
-    , toggle: function () {
-        return this[!this.isShown ? 'show' : 'hide']()
-      }
-
-    , show: function () {
-        var that = this
-          , e = $.Event('show')
-
-        this.$element.trigger(e)
-
-        if (this.isShown || e.isDefaultPrevented()) return
-
-        $('body').addClass('modal-open')
-
-        this.isShown = true
-
-        this.escape()
-
-        this.backdrop(function () {
-          var transition = $.support.transition && that.$element.hasClass('fade')
-
-          if (!that.$element.parent().length) {
-            that.$element.appendTo(document.body) //don't move modals dom position
-          }
-
-          that.$element
-            .show()
-
-          if (transition) {
-            that.$element[0].offsetWidth // force reflow
-          }
-
-          that.$element
-            .addClass('in')
-            .attr('aria-hidden', false)
-            .focus()
-
-          that.enforceFocus()
-
-          transition ?
-            that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
-            that.$element.trigger('shown')
-
-        })
-      }
-
-    , hide: function (e) {
-        e && e.preventDefault()
-
-        var that = this
-
-        e = $.Event('hide')
-
-        this.$element.trigger(e)
-
-        if (!this.isShown || e.isDefaultPrevented()) return
-
-        this.isShown = false
-
-        $('body').removeClass('modal-open')
-
-        this.escape()
-
-        $(document).off('focusin.modal')
-
-        this.$element
-          .removeClass('in')
-          .attr('aria-hidden', true)
-
-        $.support.transition && this.$element.hasClass('fade') ?
-          this.hideWithTransition() :
-          this.hideModal()
-      }
-
-    , enforceFocus: function () {
-        var that = this
-        $(document).on('focusin.modal', function (e) {
-          if (that.$element[0] !== e.target && !that.$element.has(e.target).length) {
-            that.$element.focus()
-          }
-        })
-      }
-
-    , escape: function () {
-        var that = this
-        if (this.isShown && this.options.keyboard) {
-          this.$element.on('keyup.dismiss.modal', function ( e ) {
-            e.which == 27 && that.hide()
-          })
-        } else if (!this.isShown) {
-          this.$element.off('keyup.dismiss.modal')
-        }
-      }
-
-    , hideWithTransition: function () {
-        var that = this
-          , timeout = setTimeout(function () {
-              that.$element.off($.support.transition.end)
-              that.hideModal()
-            }, 500)
-
-        this.$element.one($.support.transition.end, function () {
-          clearTimeout(timeout)
-          that.hideModal()
-        })
-      }
-
-    , hideModal: function (that) {
-        this.$element
-          .hide()
-          .trigger('hidden')
-
-        this.backdrop()
-      }
-
-    , removeBackdrop: function () {
-        this.$backdrop.remove()
-        this.$backdrop = null
-      }
-
-    , backdrop: function (callback) {
-        var that = this
-          , animate = this.$element.hasClass('fade') ? 'fade' : ''
-
-        if (this.isShown && this.options.backdrop) {
-          var doAnimate = $.support.transition && animate
-
-          this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
-            .appendTo(document.body)
-
-          if (this.options.backdrop != 'static') {
-            this.$backdrop.click($.proxy(this.hide, this))
-          }
-
-          if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
-
-          this.$backdrop.addClass('in')
-
-          doAnimate ?
-            this.$backdrop.one($.support.transition.end, callback) :
-            callback()
-
-        } else if (!this.isShown && this.$backdrop) {
-          this.$backdrop.removeClass('in')
-
-          $.support.transition && this.$element.hasClass('fade')?
-            this.$backdrop.one($.support.transition.end, $.proxy(this.removeBackdrop, this)) :
-            this.removeBackdrop()
-
-        } else if (callback) {
-          callback()
-        }
-      }
-  }
-
-
- /* MODAL PLUGIN DEFINITION
-  * ======================= */
-
-  $.fn.modal = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('modal')
-        , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
-      if (!data) $this.data('modal', (data = new Modal(this, options)))
-      if (typeof option == 'string') data[option]()
-      else if (options.show) data.show()
-    })
-  }
-
-  $.fn.modal.defaults = {
-      backdrop: true
-    , keyboard: true
-    , show: true
-  }
-
-  $.fn.modal.Constructor = Modal
-
-
- /* MODAL DATA-API
-  * ============== */
-
-  $(function () {
-    $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
-      var $this = $(this)
-        , href = $this.attr('href')
-        , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
-        , option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
-
-      e.preventDefault()
-
-      $target
-        .modal(option)
-        .one('hide', function () {
-          $this.focus()
-        })
-    })
-  })
-
-}(window.jQuery);/* ===========================================================
- * bootstrap-tooltip.js v2.1.1
- * http://twitter.github.com/bootstrap/javascript.html#tooltips
- * Inspired by the original jQuery.tipsy by Jason Frame
- * ===========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed 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.
- * ========================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* TOOLTIP PUBLIC CLASS DEFINITION
-  * =============================== */
-
-  var Tooltip = function (element, options) {
-    this.init('tooltip', element, options)
-  }
-
-  Tooltip.prototype = {
-
-    constructor: Tooltip
-
-  , init: function (type, element, options) {
-      var eventIn
-        , eventOut
-
-      this.type = type
-      this.$element = $(element)
-      this.options = this.getOptions(options)
-      this.enabled = true
-
-      if (this.options.trigger == 'click') {
-        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
-      } else if (this.options.trigger != 'manual') {
-        eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
-        eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
-        this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
-        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
-      }
-
-      this.options.selector ?
-        (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
-        this.fixTitle()
-    }
-
-  , getOptions: function (options) {
-      options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
-
-      if (options.delay && typeof options.delay == 'number') {
-        options.delay = {
-          show: options.delay
-        , hide: options.delay
-        }
-      }
-
-      return options
-    }
-
-  , enter: function (e) {
-      var self = $(e.currentTarget)[this.type](this._options).data(this.type)
-
-      if (!self.options.delay || !self.options.delay.show) return self.show()
-
-      clearTimeout(this.timeout)
-      self.hoverState = 'in'
-      this.timeout = setTimeout(function() {
-        if (self.hoverState == 'in') self.show()
-      }, self.options.delay.show)
-    }
-
-  , leave: function (e) {
-      var self = $(e.currentTarget)[this.type](this._options).data(this.type)
-
-      if (this.timeout) clearTimeout(this.timeout)
-      if (!self.options.delay || !self.options.delay.hide) return self.hide()
-
-      self.hoverState = 'out'
-      this.timeout = setTimeout(function() {
-        if (self.hoverState == 'out') self.hide()
-      }, self.options.delay.hide)
-    }
-
-  , show: function () {
-      var $tip
-        , inside
-        , pos
-        , actualWidth
-        , actualHeight
-        , placement
-        , tp
-
-      if (this.hasContent() && this.enabled) {
-        $tip = this.tip()
-        this.setContent()
-
-        if (this.options.animation) {
-          $tip.addClass('fade')
-        }
-
-        placement = typeof this.options.placement == 'function' ?
-          this.options.placement.call(this, $tip[0], this.$element[0]) :
-          this.options.placement
-
-        inside = /in/.test(placement)
-
-        $tip
-          .remove()
-          .css({ top: 0, left: 0, display: 'block' })
-          .appendTo(inside ? this.$element : document.body)
-
-        pos = this.getPosition(inside)
-
-        actualWidth = $tip[0].offsetWidth
-        actualHeight = $tip[0].offsetHeight
-
-        switch (inside ? placement.split(' ')[1] : placement) {
-          case 'bottom':
-            tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
-            break
-          case 'top':
-            tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
-            break
-          case 'left':
-            tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
-            break
-          case 'right':
-            tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
-            break
-        }
-
-        $tip
-          .css(tp)
-          .addClass(placement)
-          .addClass('in')
-      }
-    }
-
-  , setContent: function () {
-      var $tip = this.tip()
-        , title = this.getTitle()
-
-      $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
-      $tip.removeClass('fade in top bottom left right')
-    }
-
-  , hide: function () {
-      var that = this
-        , $tip = this.tip()
-
-      $tip.removeClass('in')
-
-      function removeWithAnimation() {
-        var timeout = setTimeout(function () {
-          $tip.off($.support.transition.end).remove()
-        }, 500)
-
-        $tip.one($.support.transition.end, function () {
-          clearTimeout(timeout)
-          $tip.remove()
-        })
-      }
-
-      $.support.transition && this.$tip.hasClass('fade') ?
-        removeWithAnimation() :
-        $tip.remove()
-
-      return this
-    }
-
-  , fixTitle: function () {
-      var $e = this.$element
-      if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
-        $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
-      }
-    }
-
-  , hasContent: function () {
-      return this.getTitle()
-    }
-
-  , getPosition: function (inside) {
-      return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
-        width: this.$element[0].offsetWidth
-      , height: this.$element[0].offsetHeight
-      })
-    }
-
-  , getTitle: function () {
-      var title
-        , $e = this.$element
-        , o = this.options
-
-      title = $e.attr('data-original-title')
-        || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
-
-      return title
-    }
-
-  , tip: function () {
-      return this.$tip = this.$tip || $(this.options.template)
-    }
-
-  , validate: function () {
-      if (!this.$element[0].parentNode) {
-        this.hide()
-        this.$element = null
-        this.options = null
-      }
-    }
-
-  , enable: function () {
-      this.enabled = true
-    }
-
-  , disable: function () {
-      this.enabled = false
-    }
-
-  , toggleEnabled: function () {
-      this.enabled = !this.enabled
-    }
-
-  , toggle: function () {
-      this[this.tip().hasClass('in') ? 'hide' : 'show']()
-    }
-
-  , destroy: function () {
-      this.hide().$element.off('.' + this.type).removeData(this.type)
-    }
-
-  }
-
-
- /* TOOLTIP PLUGIN DEFINITION
-  * ========================= */
-
-  $.fn.tooltip = function ( option ) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('tooltip')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.tooltip.Constructor = Tooltip
-
-  $.fn.tooltip.defaults = {
-    animation: true
-  , placement: 'top'
-  , selector: false
-  , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
-  , trigger: 'hover'
-  , title: ''
-  , delay: 0
-  , html: true
-  }
-
-}(window.jQuery);
-/* ===========================================================
- * bootstrap-popover.js v2.1.1
- * http://twitter.github.com/bootstrap/javascript.html#popovers
- * ===========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed 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.
- * =========================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* POPOVER PUBLIC CLASS DEFINITION
-  * =============================== */
-
-  var Popover = function (element, options) {
-    this.init('popover', element, options)
-  }
-
-
-  /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
-     ========================================== */
-
-  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
-
-    constructor: Popover
-
-  , setContent: function () {
-      var $tip = this.tip()
-        , title = this.getTitle()
-        , content = this.getContent()
-
-      $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
-      $tip.find('.popover-content > *')[this.options.html ? 'html' : 'text'](content)
-
-      $tip.removeClass('fade top bottom left right in')
-    }
-
-  , hasContent: function () {
-      return this.getTitle() || this.getContent()
-    }
-
-  , getContent: function () {
-      var content
-        , $e = this.$element
-        , o = this.options
-
-      content = $e.attr('data-content')
-        || (typeof o.content == 'function' ? o.content.call($e[0]) :  o.content)
-
-      return content
-    }
-
-  , tip: function () {
-      if (!this.$tip) {
-        this.$tip = $(this.options.template)
-      }
-      return this.$tip
-    }
-
-  , destroy: function () {
-      this.hide().$element.off('.' + this.type).removeData(this.type)
-    }
-
-  })
-
-
- /* POPOVER PLUGIN DEFINITION
-  * ======================= */
-
-  $.fn.popover = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('popover')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('popover', (data = new Popover(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.popover.Constructor = Popover
-
-  $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
-    placement: 'right'
-  , trigger: 'click'
-  , content: ''
-  , template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'
-  })
-
-}(window.jQuery);/* =============================================================
- * bootstrap-scrollspy.js v2.1.1
- * http://twitter.github.com/bootstrap/javascript.html#scrollspy
- * =============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed 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.
- * ============================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* SCROLLSPY CLASS DEFINITION
-  * ========================== */
-
-  function ScrollSpy(element, options) {
-    var process = $.proxy(this.process, this)
-      , $element = $(element).is('body') ? $(window) : $(element)
-      , href
-    this.options = $.extend({}, $.fn.scrollspy.defaults, options)
-    this.$scrollElement = $element.on('scroll.scroll-spy.data-api', process)
-    this.selector = (this.options.target
-      || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
-      || '') + ' .nav li > a'
-    this.$body = $('body')
-    this.refresh()
-    this.process()
-  }
-
-  ScrollSpy.prototype = {
-
-      constructor: ScrollSpy
-
-    , refresh: function () {
-        var self = this
-          , $targets
-
-        this.offsets = $([])
-        this.targets = $([])
-
-        $targets = this.$body
-          .find(this.selector)
-          .map(function () {
-            var $el = $(this)
-              , href = $el.data('target') || $el.attr('href')
-              , $href = /^#\w/.test(href) && $(href)
-            return ( $href
-              && $href.length
-              && [[ $href.position().top, href ]] ) || null
-          })
-          .sort(function (a, b) { return a[0] - b[0] })
-          .each(function () {
-            self.offsets.push(this[0])
-            self.targets.push(this[1])
-          })
-      }
-
-    , process: function () {
-        var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
-          , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
-          , maxScroll = scrollHeight - this.$scrollElement.height()
-          , offsets = this.offsets
-          , targets = this.targets
-          , activeTarget = this.activeTarget
-          , i
-
-        if (scrollTop >= maxScroll) {
-          return activeTarget != (i = targets.last()[0])
-            && this.activate ( i )
-        }
-
-        for (i = offsets.length; i--;) {
-          activeTarget != targets[i]
-            && scrollTop >= offsets[i]
-            && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
-            && this.activate( targets[i] )
-        }
-      }
-
-    , activate: function (target) {
-        var active
-          , selector
-
-        this.activeTarget = target
-
-        $(this.selector)
-          .parent('.active')
-          .removeClass('active')
-
-        selector = this.selector
-          + '[data-target="' + target + '"],'
-          + this.selector + '[href="' + target + '"]'
-
-        active = $(selector)
-          .parent('li')
-          .addClass('active')
-
-        if (active.parent('.dropdown-menu').length)  {
-          active = active.closest('li.dropdown').addClass('active')
-        }
-
-        active.trigger('activate')
-      }
-
-  }
-
-
- /* SCROLLSPY PLUGIN DEFINITION
-  * =========================== */
-
-  $.fn.scrollspy = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('scrollspy')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.scrollspy.Constructor = ScrollSpy
-
-  $.fn.scrollspy.defaults = {
-    offset: 10
-  }
-
-
- /* SCROLLSPY DATA-API
-  * ================== */
-
-  $(window).on('load', function () {
-    $('[data-spy="scroll"]').each(function () {
-      var $spy = $(this)
-      $spy.scrollspy($spy.data())
-    })
-  })
-
-}(window.jQuery);/* ========================================================
- * bootstrap-tab.js v2.1.1
- * http://twitter.github.com/bootstrap/javascript.html#tabs
- * ========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed 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.
- * ======================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* TAB CLASS DEFINITION
-  * ==================== */
-
-  var Tab = function (element) {
-    this.element = $(element)
-  }
-
-  Tab.prototype = {
-
-    constructor: Tab
-
-  , show: function () {
-      var $this = this.element
-        , $ul = $this.closest('ul:not(.dropdown-menu)')
-        , selector = $this.attr('data-target')
-        , previous
-        , $target
-        , e
-
-      if (!selector) {
-        selector = $this.attr('href')
-        selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
-      }
-
-      if ( $this.parent('li').hasClass('active') ) return
-
-      previous = $ul.find('.active a').last()[0]
-
-      e = $.Event('show', {
-        relatedTarget: previous
-      })
-
-      $this.trigger(e)
-
-      if (e.isDefaultPrevented()) return
-
-      $target = $(selector)
-
-      this.activate($this.parent('li'), $ul)
-      this.activate($target, $target.parent(), function () {
-        $this.trigger({
-          type: 'shown'
-        , relatedTarget: previous
-        })
-      })
-    }
-
-  , activate: function ( element, container, callback) {
-      var $active = container.find('> .active')
-        , transition = callback
-            && $.support.transition
-            && $active.hasClass('fade')
-
-      function next() {
-        $active
-          .removeClass('active')
-          .find('> .dropdown-menu > .active')
-          .removeClass('active')
-
-        element.addClass('active')
-
-        if (transition) {
-          element[0].offsetWidth // reflow for transition
-          element.addClass('in')
-        } else {
-          element.removeClass('fade')
-        }
-
-        if ( element.parent('.dropdown-menu') ) {
-          element.closest('li.dropdown').addClass('active')
-        }
-
-        callback && callback()
-      }
-
-      transition ?
-        $active.one($.support.transition.end, next) :
-        next()
-
-      $active.removeClass('in')
-    }
-  }
-
-
- /* TAB PLUGIN DEFINITION
-  * ===================== */
-
-  $.fn.tab = function ( option ) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('tab')
-      if (!data) $this.data('tab', (data = new Tab(this)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.tab.Constructor = Tab
-
-
- /* TAB DATA-API
-  * ============ */
-
-  $(function () {
-    $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
-      e.preventDefault()
-      $(this).tab('show')
-    })
-  })
-
-}(window.jQuery);/* =============================================================
- * bootstrap-typeahead.js v2.1.1
- * http://twitter.github.com/bootstrap/javascript.html#typeahead
- * =============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed 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.
- * ============================================================ */
-
-
-!function($){
-
-  "use strict"; // jshint ;_;
-
-
- /* TYPEAHEAD PUBLIC CLASS DEFINITION
-  * ================================= */
-
-  var Typeahead = function (element, options) {
-    this.$element = $(element)
-    this.options = $.extend({}, $.fn.typeahead.defaults, options)
-    this.matcher = this.options.matcher || this.matcher
-    this.sorter = this.options.sorter || this.sorter
-    this.highlighter = this.options.highlighter || this.highlighter
-    this.updater = this.options.updater || this.updater
-    this.$menu = $(this.options.menu).appendTo('body')
-    this.source = this.options.source
-    this.shown = false
-    this.listen()
-  }
-
-  Typeahead.prototype = {
-
-    constructor: Typeahead
-
-  , select: function () {
-      var val = this.$menu.find('.active').attr('data-value')
-      this.$element
-        .val(this.updater(val))
-        .change()
-      return this.hide()
-    }
-
-  , updater: function (item) {
-      return item
-    }
-
-  , show: function () {
-      var pos = $.extend({}, this.$element.offset(), {
-        height: this.$element[0].offsetHeight
-      })
-
-      this.$menu.css({
-        top: pos.top + pos.height
-      , left: pos.left
-      })
-
-      this.$menu.show()
-      this.shown = true
-      return this
-    }
-
-  , hide: function () {
-      this.$menu.hide()
-      this.shown = false
-      return this
-    }
-
-  , lookup: function (event) {
-      var items
-
-      this.query = this.$element.val()
-
-      if (!this.query || this.query.length < this.options.minLength) {
-        return this.shown ? this.hide() : this
-      }
-
-      items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source
-
-      return items ? this.process(items) : this
-    }
-
-  , process: function (items) {
-      var that = this
-
-      items = $.grep(items, function (item) {
-        return that.matcher(item)
-      })
-
-      items = this.sorter(items)
-
-      if (!items.length) {
-        return this.shown ? this.hide() : this
-      }
-
-      return this.render(items.slice(0, this.options.items)).show()
-    }
-
-  , matcher: function (item) {
-      return ~item.toLowerCase().indexOf(this.query.toLowerCase())
-    }
-
-  , sorter: function (items) {
-      var beginswith = []
-        , caseSensitive = []
-        , caseInsensitive = []
-        , item
-
-      while (item = items.shift()) {
-        if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
-        else if (~item.indexOf(this.query)) caseSensitive.push(item)
-        else caseInsensitive.push(item)
-      }
-
-      return beginswith.concat(caseSensitive, caseInsensitive)
-    }
-
-  , highlighter: function (item) {
-      var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&')
-      return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
-        return '<strong>' + match + '</strong>'
-      })
-    }
-
-  , render: function (items) {
-      var that = this
-
-      items = $(items).map(function (i, item) {
-        i = $(that.options.item).attr('data-value', item)
-        i.find('a').html(that.highlighter(item))
-        return i[0]
-      })
-
-      items.first().addClass('active')
-      this.$menu.html(items)
-      return this
-    }
-
-  , next: function (event) {
-      var active = this.$menu.find('.active').removeClass('active')
-        , next = active.next()
-
-      if (!next.length) {
-        next = $(this.$menu.find('li')[0])
-      }
-
-      next.addClass('active')
-    }
-
-  , prev: function (event) {
-      var active = this.$menu.find('.active').removeClass('active')
-        , prev = active.prev()
-
-      if (!prev.length) {
-        prev = this.$menu.find('li').last()
-      }
-
-      prev.addClass('active')
-    }
-
-  , listen: function () {
-      this.$element
-        .on('blur',     $.proxy(this.blur, this))
-        .on('keypress', $.proxy(this.keypress, this))
-        .on('keyup',    $.proxy(this.keyup, this))
-
-      if ($.browser.chrome || $.browser.webkit || $.browser.msie) {
-        this.$element.on('keydown', $.proxy(this.keydown, this))
-      }
-
-      this.$menu
-        .on('click', $.proxy(this.click, this))
-        .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
-    }
-
-  , move: function (e) {
-      if (!this.shown) return
-
-      switch(e.keyCode) {
-        case 9: // tab
-        case 13: // enter
-        case 27: // escape
-          e.preventDefault()
-          break
-
-        case 38: // up arrow
-          e.preventDefault()
-          this.prev()
-          break
-
-        case 40: // down arrow
-          e.preventDefault()
-          this.next()
-          break
-      }
-
-      e.stopPropagation()
-    }
-
-  , keydown: function (e) {
-      this.suppressKeyPressRepeat = !~$.inArray(e.keyCode, [40,38,9,13,27])
-      this.move(e)
-    }
-
-  , keypress: function (e) {
-      if (this.suppressKeyPressRepeat) return
-      this.move(e)
-    }
-
-  , keyup: function (e) {
-      switch(e.keyCode) {
-        case 40: // down arrow
-        case 38: // up arrow
-          break
-
-        case 9: // tab
-        case 13: // enter
-          if (!this.shown) return
-          this.select()
-          break
-
-        case 27: // escape
-          if (!this.shown) return
-          this.hide()
-          break
-
-        default:
-          this.lookup()
-      }
-
-      e.stopPropagation()
-      e.preventDefault()
-  }
-
-  , blur: function (e) {
-      var that = this
-      setTimeout(function () { that.hide() }, 150)
-    }
-
-  , click: function (e) {
-      e.stopPropagation()
-      e.preventDefault()
-      this.select()
-    }
-
-  , mouseenter: function (e) {
-      this.$menu.find('.active').removeClass('active')
-      $(e.currentTarget).addClass('active')
-    }
-
-  }
-
-
-  /* TYPEAHEAD PLUGIN DEFINITION
-   * =========================== */
-
-  $.fn.typeahead = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('typeahead')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.typeahead.defaults = {
-    source: []
-  , items: 8
-  , menu: '<ul class="typeahead dropdown-menu"></ul>'
-  , item: '<li><a href="#"></a></li>'
-  , minLength: 1
-  }
-
-  $.fn.typeahead.Constructor = Typeahead
-
-
- /*   TYPEAHEAD DATA-API
-  * ================== */
-
-  $(function () {
-    $('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
-      var $this = $(this)
-      if ($this.data('typeahead')) return
-      e.preventDefault()
-      $this.typeahead($this.data())
-    })
-  })
-
-}(window.jQuery);
-/* ==========================================================
- * bootstrap-affix.js v2.1.1
- * http://twitter.github.com/bootstrap/javascript.html#affix
- * ==========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed 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.
- * ========================================================== */
-
-
-!function ($) {
-
-  "use strict"; // jshint ;_;
-
-
- /* AFFIX CLASS DEFINITION
-  * ====================== */
-
-  var Affix = function (element, options) {
-    this.options = $.extend({}, $.fn.affix.defaults, options)
-    this.$window = $(window).on('scroll.affix.data-api', $.proxy(this.checkPosition, this))
-    this.$element = $(element)
-    this.checkPosition()
-  }
-
-  Affix.prototype.checkPosition = function () {
-    if (!this.$element.is(':visible')) return
-
-    var scrollHeight = $(document).height()
-      , scrollTop = this.$window.scrollTop()
-      , position = this.$element.offset()
-      , offset = this.options.offset
-      , offsetBottom = offset.bottom
-      , offsetTop = offset.top
-      , reset = 'affix affix-top affix-bottom'
-      , affix
-
-    if (typeof offset != 'object') offsetBottom = offsetTop = offset
-    if (typeof offsetTop == 'function') offsetTop = offset.top()
-    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
-
-    affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ?
-      false    : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ?
-      'bottom' : offsetTop != null && scrollTop <= offsetTop ?
-      'top'    : false
-
-    if (this.affixed === affix) return
-
-    this.affixed = affix
-    this.unpin = affix == 'bottom' ? position.top - scrollTop : null
-
-    this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : ''))
-  }
-
-
- /* AFFIX PLUGIN DEFINITION
-  * ======================= */
-
-  $.fn.affix = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('affix')
-        , options = typeof option == 'object' && option
-      if (!data) $this.data('affix', (data = new Affix(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.affix.Constructor = Affix
-
-  $.fn.affix.defaults = {
-    offset: 0
-  }
-
-
- /* AFFIX DATA-API
-  * ============== */
-
-  $(window).on('load', function () {
-    $('[data-spy="affix"]').each(function () {
-      var $spy = $(this)
-        , data = $spy.data()
-
-      data.offset = data.offset || {}
-
-      data.offsetBottom && (data.offset.bottom = data.offsetBottom)
-      data.offsetTop && (data.offset.top = data.offsetTop)
-
-      $spy.affix(data)
-    })
-  })
-
-
-}(window.jQuery);
\ No newline at end of file
diff --git a/examples/moviefun-plus/src/main/webapp/assets/js/bootstrap.min.js b/examples/moviefun-plus/src/main/webapp/assets/js/bootstrap.min.js
deleted file mode 100644
index 0e33fb1..0000000
--- a/examples/moviefun-plus/src/main/webapp/assets/js/bootstrap.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/*!
-* Bootstrap.js by @fat & @mdo
-* Copyright 2012 Twitter, Inc.
-* http://www.apache.org/licenses/LICENSE-2.0.txt
-*/
-!function(e){e(function(){"use strict";e.support.transition=function(){var e=function(){var e=document.createElement("bootstrap"),t={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},n;for(n in t)if(e.style[n]!==undefined)return t[n]}();return e&&{end:e}}()})}(window.jQuery),!function(e){"use strict";var t='[data-dismiss="alert"]',n=function(n){e(n).on("click",t,this.close)};n.prototype.close=function(t){function s(){i.trigger("closed").remove()}var n=e(this),r=n.attr("data-target"),i;r||(r=n.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,"")),i=e(r),t&&t.preventDefault(),i.length||(i=n.hasClass("alert")?n:n.parent()),i.trigger(t=e.Event("close"));if(t.isDefaultPrevented())return;i.removeClass("in"),e.support.transition&&i.hasClass("fade")?i.on(e.support.transition.end,s):s()},e.fn.alert=function(t){return this.each(function(){var r=e(this),i=r.data("alert");i||r.data("alert",i=new n(this)),typeof t=="string"&&i[t].call(r)})},e.fn.alert.Constructor=n,e(function(){e("body").on("click.alert.data-api",t,n.prototype.close)})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.button.defaults,n)};t.prototype.setState=function(e){var t="disabled",n=this.$element,r=n.data(),i=n.is("input")?"val":"html";e+="Text",r.resetText||n.data("resetText",n[i]()),n[i](r[e]||this.options[e]),setTimeout(function(){e=="loadingText"?n.addClass(t).attr(t,t):n.removeClass(t).removeAttr(t)},0)},t.prototype.toggle=function(){var e=this.$element.closest('[data-toggle="buttons-radio"]');e&&e.find(".active").removeClass("active"),this.$element.toggleClass("active")},e.fn.button=function(n){return this.each(function(){var r=e(this),i=r.data("button"),s=typeof n=="object"&&n;i||r.data("button",i=new t(this,s)),n=="toggle"?i.toggle():n&&i.setState(n)})},e.fn.button.defaults={loadingText:"loading..."},e.fn.button.Constructor=t,e(function(){e("body").on("click.button.data-api","[data-toggle^=button]",function(t){var n=e(t.target);n.hasClass("btn")||(n=n.closest(".btn")),n.button("toggle")})})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=n,this.options.slide&&this.slide(this.options.slide),this.options.pause=="hover"&&this.$element.on("mouseenter",e.proxy(this.pause,this)).on("mouseleave",e.proxy(this.cycle,this))};t.prototype={cycle:function(t){return t||(this.paused=!1),this.options.interval&&!this.paused&&(this.interval=setInterval(e.proxy(this.next,this),this.options.interval)),this},to:function(t){var n=this.$element.find(".item.active"),r=n.parent().children(),i=r.index(n),s=this;if(t>r.length-1||t<0)return;return this.sliding?this.$element.one("slid",function(){s.to(t)}):i==t?this.pause().cycle():this.slide(t>i?"next":"prev",e(r[t]))},pause:function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&e.support.transition.end&&(this.$element.trigger(e.support.transition.end),this.cycle()),clearInterval(this.interval),this.interval=null,this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(t,n){var r=this.$element.find(".item.active"),i=n||r[t](),s=this.interval,o=t=="next"?"left":"right",u=t=="next"?"first":"last",a=this,f=e.Event("slide",{relatedTarget:i[0]});this.sliding=!0,s&&this.pause(),i=i.length?i:this.$element.find(".item")[u]();if(i.hasClass("active"))return;if(e.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(f);if(f.isDefaultPrevented())return;i.addClass(t),i[0].offsetWidth,r.addClass(o),i.addClass(o),this.$element.one(e.support.transition.end,function(){i.removeClass([t,o].join(" ")).addClass("active"),r.removeClass(["active",o].join(" ")),a.sliding=!1,setTimeout(function(){a.$element.trigger("slid")},0)})}else{this.$element.trigger(f);if(f.isDefaultPrevented())return;r.removeClass("active"),i.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return s&&this.cycle(),this}},e.fn.carousel=function(n){return this.each(function(){var r=e(this),i=r.data("carousel"),s=e.extend({},e.fn.carousel.defaults,typeof n=="object"&&n),o=typeof n=="string"?n:s.slide;i||r.data("carousel",i=new t(this,s)),typeof n=="number"?i.to(n):o?i[o]():s.interval&&i.cycle()})},e.fn.carousel.defaults={interval:5e3,pause:"hover"},e.fn.carousel.Constructor=t,e(function(){e("body").on("click.carousel.data-api","[data-slide]",function(t){var n=e(this),r,i=e(n.attr("data-target")||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,"")),s=!i.data("modal")&&e.extend({},i.data(),n.data());i.carousel(s),t.preventDefault()})})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.collapse.defaults,n),this.options.parent&&(this.$parent=e(this.options.parent)),this.options.toggle&&this.toggle()};t.prototype={constructor:t,dimension:function(){var e=this.$element.hasClass("width");return e?"width":"height"},show:function(){var t,n,r,i;if(this.transitioning)return;t=this.dimension(),n=e.camelCase(["scroll",t].join("-")),r=this.$parent&&this.$parent.find("> .accordion-group > .in");if(r&&r.length){i=r.data("collapse");if(i&&i.transitioning)return;r.collapse("hide"),i||r.data("collapse",null)}this.$element[t](0),this.transition("addClass",e.Event("show"),"shown"),e.support.transition&&this.$element[t](this.$element[0][n])},hide:function(){var t;if(this.transitioning)return;t=this.dimension(),this.reset(this.$element[t]()),this.transition("removeClass",e.Event("hide"),"hidden"),this.$element[t](0)},reset:function(e){var t=this.dimension();return this.$element.removeClass("collapse")[t](e||"auto")[0].offsetWidth,this.$element[e!==null?"addClass":"removeClass"]("collapse"),this},transition:function(t,n,r){var i=this,s=function(){n.type=="show"&&i.reset(),i.transitioning=0,i.$element.trigger(r)};this.$element.trigger(n);if(n.isDefaultPrevented())return;this.transitioning=1,this.$element[t]("in"),e.support.transition&&this.$element.hasClass("collapse")?this.$element.one(e.support.transition.end,s):s()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}},e.fn.collapse=function(n){return this.each(function(){var r=e(this),i=r.data("collapse"),s=typeof n=="object"&&n;i||r.data("collapse",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.collapse.defaults={toggle:!0},e.fn.collapse.Constructor=t,e(function(){e("body").on("click.collapse.data-api","[data-toggle=collapse]",function(t){var n=e(this),r,i=n.attr("data-target")||t.preventDefault()||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,""),s=e(i).data("collapse")?"toggle":n.data();n[e(i).hasClass("in")?"addClass":"removeClass"]("collapsed"),e(i).collapse(s)})})}(window.jQuery),!function(e){"use strict";function r(){i(e(t)).removeClass("open")}function i(t){var n=t.attr("data-target"),r;return n||(n=t.attr("href"),n=n&&/#/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,"")),r=e(n),r.length||(r=t.parent()),r}var t="[data-toggle=dropdown]",n=function(t){var n=e(t).on("click.dropdown.data-api",this.toggle);e("html").on("click.dropdown.data-api",function(){n.parent().removeClass("open")})};n.prototype={constructor:n,toggle:function(t){var n=e(this),s,o;if(n.is(".disabled, :disabled"))return;return s=i(n),o=s.hasClass("open"),r(),o||(s.toggleClass("open"),n.focus()),!1},keydown:function(t){var n,r,s,o,u,a;if(!/(38|40|27)/.test(t.keyCode))return;n=e(this),t.preventDefault(),t.stopPropagation();if(n.is(".disabled, :disabled"))return;o=i(n),u=o.hasClass("open");if(!u||u&&t.keyCode==27)return n.click();r=e("[role=menu] li:not(.divider) a",o);if(!r.length)return;a=r.index(r.filter(":focus")),t.keyCode==38&&a>0&&a--,t.keyCode==40&&a<r.length-1&&a++,~a||(a=0),r.eq(a).focus()}},e.fn.dropdown=function(t){return this.each(function(){var r=e(this),i=r.data("dropdown");i||r.data("dropdown",i=new n(this)),typeof t=="string"&&i[t].call(r)})},e.fn.dropdown.Constructor=n,e(function(){e("html").on("click.dropdown.data-api touchstart.dropdown.data-api",r),e("body").on("click.dropdown touchstart.dropdown.data-api",".dropdown form",function(e){e.stopPropagation()}).on("click.dropdown.data-api touchstart.dropdown.data-api",t,n.prototype.toggle).on("keydown.dropdown.data-api touchstart.dropdown.data-api",t+", [role=menu]",n.prototype.keydown)})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.options=n,this.$element=e(t).delegate('[data-dismiss="modal"]',"click.dismiss.modal",e.proxy(this.hide,this)),this.options.remote&&this.$element.find(".modal-body").load(this.options.remote)};t.prototype={constructor:t,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var t=this,n=e.Event("show");this.$element.trigger(n);if(this.isShown||n.isDefaultPrevented())return;e("body").addClass("modal-open"),this.isShown=!0,this.escape(),this.backdrop(function(){var n=e.support.transition&&t.$element.hasClass("fade");t.$element.parent().length||t.$element.appendTo(document.body),t.$element.show(),n&&t.$element[0].offsetWidth,t.$element.addClass("in").attr("aria-hidden",!1).focus(),t.enforceFocus(),n?t.$element.one(e.support.transition.end,function(){t.$element.trigger("shown")}):t.$element.trigger("shown")})},hide:function(t){t&&t.preventDefault();var n=this;t=e.Event("hide"),this.$element.trigger(t);if(!this.isShown||t.isDefaultPrevented())return;this.isShown=!1,e("body").removeClass("modal-open"),this.escape(),e(document).off("focusin.modal"),this.$element.removeClass("in").attr("aria-hidden",!0),e.support.transition&&this.$element.hasClass("fade")?this.hideWithTransition():this.hideModal()},enforceFocus:function(){var t=this;e(document).on("focusin.modal",function(e){t.$element[0]!==e.target&&!t.$element.has(e.target).length&&t.$element.focus()})},escape:function(){var e=this;this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.modal",function(t){t.which==27&&e.hide()}):this.isShown||this.$element.off("keyup.dismiss.modal")},hideWithTransition:function(){var t=this,n=setTimeout(function(){t.$element.off(e.support.transition.end),t.hideModal()},500);this.$element.one(e.support.transition.end,function(){clearTimeout(n),t.hideModal()})},hideModal:function(e){this.$element.hide().trigger("hidden"),this.backdrop()},removeBackdrop:function(){this.$backdrop.remove(),this.$backdrop=null},backdrop:function(t){var n=this,r=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var i=e.support.transition&&r;this.$backdrop=e('<div class="modal-backdrop '+r+'" />').appendTo(document.body),this.options.backdrop!="static"&&this.$backdrop.click(e.proxy(this.hide,this)),i&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),i?this.$backdrop.one(e.support.transition.end,t):t()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),e.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(e.support.transition.end,e.proxy(this.removeBackdrop,this)):this.removeBackdrop()):t&&t()}},e.fn.modal=function(n){return this.each(function(){var r=e(this),i=r.data("modal"),s=e.extend({},e.fn.modal.defaults,r.data(),typeof n=="object"&&n);i||r.data("modal",i=new t(this,s)),typeof n=="string"?i[n]():s.show&&i.show()})},e.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},e.fn.modal.Constructor=t,e(function(){e("body").on("click.modal.data-api",'[data-toggle="modal"]',function(t){var n=e(this),r=n.attr("href"),i=e(n.attr("data-target")||r&&r.replace(/.*(?=#[^\s]+$)/,"")),s=i.data("modal")?"toggle":e.extend({remote:!/#/.test(r)&&r},i.data(),n.data());t.preventDefault(),i.modal(s).one("hide",function(){n.focus()})})})}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("tooltip",e,t)};t.prototype={constructor:t,init:function(t,n,r){var i,s;this.type=t,this.$element=e(n),this.options=this.getOptions(r),this.enabled=!0,this.options.trigger=="click"?this.$element.on("click."+this.type,this.options.selector,e.proxy(this.toggle,this)):this.options.trigger!="manual"&&(i=this.options.trigger=="hover"?"mouseenter":"focus",s=this.options.trigger=="hover"?"mouseleave":"blur",this.$element.on(i+"."+this.type,this.options.selector,e.proxy(this.enter,this)),this.$element.on(s+"."+this.type,this.options.selector,e.proxy(this.leave,this))),this.options.selector?this._options=e.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(t){return t=e.extend({},e.fn[this.type].defaults,t,this.$element.data()),t.delay&&typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),t},enter:function(t){var n=e(t.currentTarget)[this.type](this._options).data(this.type);if(!n.options.delay||!n.options.delay.show)return n.show();clearTimeout(this.timeout),n.hoverState="in",this.timeout=setTimeout(function(){n.hoverState=="in"&&n.show()},n.options.delay.show)},leave:function(t){var n=e(t.currentTarget)[this.type](this._options).data(this.type);this.timeout&&clearTimeout(this.timeout);if(!n.options.delay||!n.options.delay.hide)return n.hide();n.hoverState="out",this.timeout=setTimeout(function(){n.hoverState=="out"&&n.hide()},n.options.delay.hide)},show:function(){var e,t,n,r,i,s,o;if(this.hasContent()&&this.enabled){e=this.tip(),this.setContent(),this.options.animation&&e.addClass("fade"),s=typeof this.options.placement=="function"?this.options.placement.call(this,e[0],this.$element[0]):this.options.placement,t=/in/.test(s),e.remove().css({top:0,left:0,display:"block"}).appendTo(t?this.$element:document.body),n=this.getPosition(t),r=e[0].offsetWidth,i=e[0].offsetHeight;switch(t?s.split(" ")[1]:s){case"bottom":o={top:n.top+n.height,left:n.left+n.width/2-r/2};break;case"top":o={top:n.top-i,left:n.left+n.width/2-r/2};break;case"left":o={top:n.top+n.height/2-i/2,left:n.left-r};break;case"right":o={top:n.top+n.height/2-i/2,left:n.left+n.width}}e.css(o).addClass(s).addClass("in")}},setContent:function(){var e=this.tip(),t=this.getTitle();e.find(".tooltip-inner")[this.options.html?"html":"text"](t),e.removeClass("fade in top bottom left right")},hide:function(){function r(){var t=setTimeout(function(){n.off(e.support.transition.end).remove()},500);n.one(e.support.transition.end,function(){clearTimeout(t),n.remove()})}var t=this,n=this.tip();return n.removeClass("in"),e.support.transition&&this.$tip.hasClass("fade")?r():n.remove(),this},fixTitle:function(){var e=this.$element;(e.attr("title")||typeof e.attr("data-original-title")!="string")&&e.attr("data-original-title",e.attr("title")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(t){return e.extend({},t?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var e,t=this.$element,n=this.options;return e=t.attr("data-original-title")||(typeof n.title=="function"?n.title.call(t[0]):n.title),e},tip:function(){return this.$tip=this.$tip||e(this.options.template)},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(){this[this.tip().hasClass("in")?"hide":"show"]()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}},e.fn.tooltip=function(n){return this.each(function(){var r=e(this),i=r.data("tooltip"),s=typeof n=="object"&&n;i||r.data("tooltip",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.tooltip.Constructor=t,e.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover",title:"",delay:0,html:!0}}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("popover",e,t)};t.prototype=e.extend({},e.fn.tooltip.Constructor.prototype,{constructor:t,setContent:function(){var e=this.tip(),t=this.getTitle(),n=this.getContent();e.find(".popover-title")[this.options.html?"html":"text"](t),e.find(".popover-content > *")[this.options.html?"html":"text"](n),e.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var e,t=this.$element,n=this.options;return e=t.attr("data-content")||(typeof n.content=="function"?n.content.call(t[0]):n.content),e},tip:function(){return this.$tip||(this.$tip=e(this.options.template)),this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}}),e.fn.popover=function(n){return this.each(function(){var r=e(this),i=r.data("popover"),s=typeof n=="object"&&n;i||r.data("popover",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.popover.Constructor=t,e.fn.popover.defaults=e.extend({},e.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'})}(window.jQuery),!function(e){"use strict";function t(t,n){var r=e.proxy(this.process,this),i=e(t).is("body")?e(window):e(t),s;this.options=e.extend({},e.fn.scrollspy.defaults,n),this.$scrollElement=i.on("scroll.scroll-spy.data-api",r),this.selector=(this.options.target||(s=e(t).attr("href"))&&s.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=e("body"),this.refresh(),this.process()}t.prototype={constructor:t,refresh:function(){var t=this,n;this.offsets=e([]),this.targets=e([]),n=this.$body.find(this.selector).map(function(){var t=e(this),n=t.data("target")||t.attr("href"),r=/^#\w/.test(n)&&e(n);return r&&r.length&&[[r.position().top,n]]||null}).sort(function(e,t){return e[0]-t[0]}).each(function(){t.offsets.push(this[0]),t.targets.push(this[1])})},process:function(){var e=this.$scrollElement.scrollTop()+this.options.offset,t=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,n=t-this.$scrollElement.height(),r=this.offsets,i=this.targets,s=this.activeTarget,o;if(e>=n)return s!=(o=i.last()[0])&&this.activate(o);for(o=r.length;o--;)s!=i[o]&&e>=r[o]&&(!r[o+1]||e<=r[o+1])&&this.activate(i[o])},activate:function(t){var n,r;this.activeTarget=t,e(this.selector).parent(".active").removeClass("active"),r=this.selector+'[data-target="'+t+'"],'+this.selector+'[href="'+t+'"]',n=e(r).parent("li").addClass("active"),n.parent(".dropdown-menu").length&&(n=n.closest("li.dropdown").addClass("active")),n.trigger("activate")}},e.fn.scrollspy=function(n){return this.each(function(){var r=e(this),i=r.data("scrollspy"),s=typeof n=="object"&&n;i||r.data("scrollspy",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.scrollspy.Constructor=t,e.fn.scrollspy.defaults={offset:10},e(window).on("load",function(){e('[data-spy="scroll"]').each(function(){var t=e(this);t.scrollspy(t.data())})})}(window.jQuery),!function(e){"use strict";var t=function(t){this.element=e(t)};t.prototype={constructor:t,show:function(){var t=this.element,n=t.closest("ul:not(.dropdown-menu)"),r=t.attr("data-target"),i,s,o;r||(r=t.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,""));if(t.parent("li").hasClass("active"))return;i=n.find(".active a").last()[0],o=e.Event("show",{relatedTarget:i}),t.trigger(o);if(o.isDefaultPrevented())return;s=e(r),this.activate(t.parent("li"),n),this.activate(s,s.parent(),function(){t.trigger({type:"shown",relatedTarget:i})})},activate:function(t,n,r){function o(){i.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),t.addClass("active"),s?(t[0].offsetWidth,t.addClass("in")):t.removeClass("fade"),t.parent(".dropdown-menu")&&t.closest("li.dropdown").addClass("active"),r&&r()}var i=n.find("> .active"),s=r&&e.support.transition&&i.hasClass("fade");s?i.one(e.support.transition.end,o):o(),i.removeClass("in")}},e.fn.tab=function(n){return this.each(function(){var r=e(this),i=r.data("tab");i||r.data("tab",i=new t(this)),typeof n=="string"&&i[n]()})},e.fn.tab.Constructor=t,e(function(){e("body").on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(t){t.preventDefault(),e(this).tab("show")})})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.typeahead.defaults,n),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.$menu=e(this.options.menu).appendTo("body"),this.source=this.options.source,this.shown=!1,this.listen()};t.prototype={constructor:t,select:function(){var e=this.$menu.find(".active").attr("data-value");return this.$element.val(this.updater(e)).change(),this.hide()},updater:function(e){return e},show:function(){var t=e.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});return this.$menu.css({top:t.top+t.height,left:t.left}),this.$menu.show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(t){var n;return this.query=this.$element.val(),!this.query||this.query.length<this.options.minLength?this.shown?this.hide():this:(n=e.isFunction(this.source)?this.source(this.query,e.proxy(this.process,this)):this.source,n?this.process(n):this)},process:function(t){var n=this;return t=e.grep(t,function(e){return n.matcher(e)}),t=this.sorter(t),t.length?this.render(t.slice(0,this.options.items)).show():this.shown?this.hide():this},matcher:function(e){return~e.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(e){var t=[],n=[],r=[],i;while(i=e.shift())i.toLowerCase().indexOf(this.query.toLowerCase())?~i.indexOf(this.query)?n.push(i):r.push(i):t.push(i);return t.concat(n,r)},highlighter:function(e){var t=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return e.replace(new RegExp("("+t+")","ig"),function(e,t){return"<strong>"+t+"</strong>"})},render:function(t){var n=this;return t=e(t).map(function(t,r){return t=e(n.options.item).attr("data-value",r),t.find("a").html(n.highlighter(r)),t[0]}),t.first().addClass("active"),this.$menu.html(t),this},next:function(t){var n=this.$menu.find(".active").removeClass("active"),r=n.next();r.length||(r=e(this.$menu.find("li")[0])),r.addClass("active")},prev:function(e){var t=this.$menu.find(".active").removeClass("active"),n=t.prev();n.length||(n=this.$menu.find("li").last()),n.addClass("active")},listen:function(){this.$element.on("blur",e.proxy(this.blur,this)).on("keypress",e.proxy(this.keypress,this)).on("keyup",e.proxy(this.keyup,this)),(e.browser.chrome||e.browser.webkit||e.browser.msie)&&this.$element.on("keydown",e.proxy(this.keydown,this)),this.$menu.on("click",e.proxy(this.click,this)).on("mouseenter","li",e.proxy(this.mouseenter,this))},move:function(e){if(!this.shown)return;switch(e.keyCode){case 9:case 13:case 27:e.preventDefault();break;case 38:e.preventDefault(),this.prev();break;case 40:e.preventDefault(),this.next()}e.stopPropagation()},keydown:function(t){this.suppressKeyPressRepeat=!~e.inArray(t.keyCode,[40,38,9,13,27]),this.move(t)},keypress:function(e){if(this.suppressKeyPressRepeat)return;this.move(e)},keyup:function(e){switch(e.keyCode){case 40:case 38:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}e.stopPropagation(),e.preventDefault()},blur:function(e){var t=this;setTimeout(function(){t.hide()},150)},click:function(e){e.stopPropagation(),e.preventDefault(),this.select()},mouseenter:function(t){this.$menu.find(".active").removeClass("active"),e(t.currentTarget).addClass("active")}},e.fn.typeahead=function(n){return this.each(function(){var r=e(this),i=r.data("typeahead"),s=typeof n=="object"&&n;i||r.data("typeahead",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>',minLength:1},e.fn.typeahead.Constructor=t,e(function(){e("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(t){var n=e(this);if(n.data("typeahead"))return;t.preventDefault(),n.typeahead(n.data())})})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.options=e.extend({},e.fn.affix.defaults,n),this.$window=e(window).on("scroll.affix.data-api",e.proxy(this.checkPosition,this)),this.$element=e(t),this.checkPosition()};t.prototype.checkPosition=function(){if(!this.$element.is(":visible"))return;var t=e(document).height(),n=this.$window.scrollTop(),r=this.$element.offset(),i=this.options.offset,s=i.bottom,o=i.top,u="affix affix-top affix-bottom",a;typeof i!="object"&&(s=o=i),typeof o=="function"&&(o=i.top()),typeof s=="function"&&(s=i.bottom()),a=this.unpin!=null&&n+this.unpin<=r.top?!1:s!=null&&r.top+this.$element.height()>=t-s?"bottom":o!=null&&n<=o?"top":!1;if(this.affixed===a)return;this.affixed=a,this.unpin=a=="bottom"?r.top-n:null,this.$element.removeClass(u).addClass("affix"+(a?"-"+a:""))},e.fn.affix=function(n){return this.each(function(){var r=e(this),i=r.data("affix"),s=typeof n=="object"&&n;i||r.data("affix",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.affix.Constructor=t,e.fn.affix.defaults={offset:0},e(window).on("load",function(){e('[data-spy="affix"]').each(function(){var t=e(this),n=t.data();n.offset=n.offset||{},n.offsetBottom&&(n.offset.bottom=n.offsetBottom),n.offsetTop&&(n.offset.top=n.offsetTop),t.affix(n)})})}(window.jQuery);
\ No newline at end of file
diff --git a/examples/moviefun-plus/src/main/webapp/default.css b/examples/moviefun-plus/src/main/webapp/default.css
deleted file mode 100644
index 991f911..0000000
--- a/examples/moviefun-plus/src/main/webapp/default.css
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- *  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.
- *
- */
-body, p, td, table, tr, .bodytext, .stepfield {
-  font-family: Verdana, arial, sans-serif;
-  font-size: 11px;
-  line-height: 16px;
-  color: #000000;
-  font-weight: normal;
-}
-
-body {
-  margin: 0px;
-  padding: 0px;
-  text-align: center;
-  background-color: #f0f0f0;
-}
-
-#Content {
-  text-align: left;
-  background-color: #fff;
-  padding: 0px;
-  margin: 0px;
-}
-
-HR {
-  color: 3 c78b5;
-  height: 1;
-}
-
-A:link, A:visited, A:active, A:hover {
-  color: #003366;
-}
-
-h1 A:link, h1 A:visited, h1 A:active {
-  text-decoration: none;
-}
-
-h1 A:hover {
-  border-bottom: 1px dotted #003366;
-}
-
-input {
-  font-family: verdana, geneva, arial, sans-serif;
-  font-size: 11px;
-  color: #000000;
-}
-
-h1 {
-  font-size: 24px;
-  line-height: normal;
-  font-weight: bold;
-  background-color: #f0f0f0;
-  color: #003366;
-  border-bottom: 1px solid #3c78b5;
-  padding: 2px;
-  margin: 36px 0px 4px 0px;
-}
-
-h2 {
-  font-size: 18px;
-  line-height: normal;
-  font-weight: bold;
-  background-color: #f0f0f0;
-  border-bottom: 1px solid #3c78b5;
-  padding: 2px;
-  margin: 27px 0px 4px 0px;
-}
-
-h3 {
-  font-size: 14px;
-  line-height: normal;
-  font-weight: bold;
-  background-color: #f0f0f0;
-  padding: 2px;
-  margin: 21px 0px 4px 0px;
-}
-
-h4 {
-  font-size: 12px;
-  line-height: normal;
-  font-weight: bold;
-  background-color: #f0f0f0;
-  padding: 2px;
-  margin: 18px 0px 4px 0px;
-}
-
-h4.search {
-  font-size: 12px;
-  line-height: normal;
-  font-weight: normal;
-  background-color: #f0f0f0;
-  padding: 4px;
-  margin: 18px 0px 4px 0px;
-}
-
-h5 {
-  font-size: 10px;
-  line-height: normal;
-  font-weight: bold;
-  background-color: #f0f0f0;
-  padding: 2px;
-  margin: 14px 0px 4px 0px;
-}
-
-h6 {
-  font-size: 8px;
-  line-height: normal;
-  font-weight: bold;
-  background-color: #f0f0f0;
-  padding: 2px;
-  margin: 14px 0px 4px 0px;
-}
-
-.smalltext {
-  color: #666666;
-  font-size: 10px;
-}
-
-.smalltext a {
-  color: #666666;
-}
-
-.tableview table {
-  margin: 0;
-}
-
-.tableview th {
-  text-align: left;
-  color: #003366;
-  font-size: 12px;
-  padding: 5px 0px 0px 5px;
-  border-bottom: 2px solid #3c78b5;
-}
-
-.tableview td {
-  text-align: left;
-  border-color: #ccc;
-  border-width: 0px 0px 1px 0px;
-  border-style: solid;
-  margin: 0;
-  padding: 4px 10px 4px 5px;
-}
-
-.bottomshadow {
-  height: 12px;
-  background-image: url("/images/border/border_bottom.gif");
-  background-repeat: repeat-x;
-}
-
-.topBarDiv a:link {
-  color: white;
-}
-
-.topBarDiv a:visited {
-  color: white;
-}
-
-.topBarDiv a:active {
-  color: white;
-}
-
-.topBarDiv a:hover {
-  color: white;
-}
-
-.topBarDiv {
-  color: white;
-}
-
-.topBar td {
-  background-color: #003366;
-}
-
-.basicPanelContainer {
-  border: 1px solid #3c78b5;
-  margin-top: 2px;
-  margin-bottom: 8px;
-  width: 100%
-}
-
-.basicPanelTitle {
-  padding: 5px;
-  margin: 0px;
-  background-color: #f0f0f0;
-  color: black;
-  font-weight: bold;
-}
-
-.basicPanelBody {
-  padding: 5px;
-  margin: 0px
-}
diff --git a/examples/moviefun-plus/src/main/webapp/index.jsp b/examples/moviefun-plus/src/main/webapp/index.jsp
deleted file mode 100644
index c0d8562..0000000
--- a/examples/moviefun-plus/src/main/webapp/index.jsp
+++ /dev/null
@@ -1,75 +0,0 @@
-<%--
-    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.
---%>
-
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
-<c:set var="language" value="${pageContext.request.locale}" />
-<fmt:setLocale value="${language}" />
-
-<!DOCTYPE html>
-<html lang="${language}">
-<head>
-<meta charset="utf-8">
-<title>Moviefun</title>
-<meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="description" content="">
-<meta name="author" content="">
-
-<!-- Le styles -->
-<link href="assets/css/bootstrap.css" rel="stylesheet">
-<link href="assets/css/movie.css" rel="stylesheet">
-<style>
-body {
-	padding-top: 60px;
-	/* 60px to make the container go all the way to the bottom of the topbar */
-}
-</style>
-<link href="assets/css/bootstrap-responsive.css" rel="stylesheet">
-
-<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-<!--[if lt IE 9]>
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
-    <![endif]-->
-</head>
-
-<body>
-
-	<div class="navbar navbar-inverse navbar-fixed-top">
-		<div class="navbar-inner">
-			<div class="container">
-				<a class="btn btn-navbar" data-toggle="collapse"
-					data-target=".nav-collapse"> <span class="icon-bar"></span> <span
-					class="icon-bar"></span> <span class="icon-bar"></span>
-				</a> <a class="brand" href="#">Moviefun</a>
-				<!--/.nav-collapse -->
-			</div>
-		</div>
-	</div>
-
-	<div class="container">
-
-		<h1>Moviefun</h1>
-		
-		<p>Please select one of the following links:</p>
-		<a href="setup.jsp">Setup</a> - Sets up the application with some sample data<br />
-		<a href="moviefun">Index</a> - Start the application<br />
-
-	</div>
-	<!-- /container -->
-</body>
-</html>
diff --git a/examples/moviefun-plus/src/main/webapp/setup.jsp b/examples/moviefun-plus/src/main/webapp/setup.jsp
deleted file mode 100644
index 1dd5932..0000000
--- a/examples/moviefun-plus/src/main/webapp/setup.jsp
+++ /dev/null
@@ -1,115 +0,0 @@
-<%--
-    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.
---%>
-<%@ page import=" org.superbiz.moviefun.Movie" %>
-<%@ page import="org.superbiz.moviefun.MoviesBean" %>
-<%@ page import="javax.naming.InitialContext" %>
-<%@ page import="java.util.List" %>
-<%@ page import="java.util.Iterator" %>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
-<%
-	InitialContext initialContext = new InitialContext();
-    MoviesBean moviesBean = (MoviesBean) initialContext.lookup("java:comp/env/movies");
-
-    moviesBean.addMovie(new Movie("Wedding Crashers", "David Dobkin", "Comedy", 7, 2005));
-    moviesBean.addMovie(new Movie("Starsky & Hutch", "Todd Phillips", "Action", 6, 2004));
-    moviesBean.addMovie(new Movie("Shanghai Knights", "David Dobkin", "Action", 6, 2003));
-    moviesBean.addMovie(new Movie("I-Spy", "Betty Thomas", "Adventure", 5, 2002));
-    moviesBean.addMovie(new Movie("The Royal Tenenbaums", "Wes Anderson", "Comedy", 8, 2001));
-    moviesBean.addMovie(new Movie("Zoolander", "Ben Stiller", "Comedy", 6, 2001));
-    moviesBean.addMovie(new Movie("Shanghai Noon", "Tom Dey", "Comedy", 7, 2000));
-%>
-<c:set var="language" value="${pageContext.request.locale}" />
-<fmt:setLocale value="${language}" />
-
-<!DOCTYPE html>
-<html lang="${language}">
-<head>
-<meta charset="utf-8">
-<title>Moviefun</title>
-<meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="description" content="">
-<meta name="author" content="">
-
-<!-- Le styles -->
-<link href="assets/css/bootstrap.css" rel="stylesheet">
-<link href="assets/css/movie.css" rel="stylesheet">
-<style>
-body {
-	padding-top: 60px;
-	/* 60px to make the container go all the way to the bottom of the topbar */
-}
-</style>
-<link href="assets/css/bootstrap-responsive.css" rel="stylesheet">
-
-<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-<!--[if lt IE 9]>
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
-    <![endif]-->
-</head>
-
-<body>
-
-	<div class="navbar navbar-inverse navbar-fixed-top">
-		<div class="navbar-inner">
-			<div class="container">
-				<a class="btn btn-navbar" data-toggle="collapse"
-					data-target=".nav-collapse"> <span class="icon-bar"></span> <span
-					class="icon-bar"></span> <span class="icon-bar"></span>
-				</a> <a class="brand" href="#">Moviefun</a>
-				<!--/.nav-collapse -->
-			</div>
-		</div>
-	</div>
-
-	<div class="container">
-
-		<h1>Moviefun</h1>
-		
-<h2>Seeded Database with the Following movies</h2>
-<table width="500">
-    <tr>
-        <td><b>Title</b></td>
-        <td><b>Director</b></td>
-        <td><b>Genre</b></td>
-    </tr>
-    <%
-        List<Movie> movies = moviesBean.getMovies();
-        for (Iterator<Movie> iterator = movies.iterator(); iterator.hasNext();) {
-            Movie movie = (Movie) iterator.next();
-    %>
-    <tr>
-        <td><%=movie.getTitle()%>
-        </td>
-        <td><%=movie.getDirector()%>
-        </td>
-        <td><%=movie.getGenre()%>
-        </td>
-    </tr>
-
-    <%
-        }
-    %>
-</table>
-
-<h2>Continue</h2>
-<a href="moviefun">Go to main app</a>
-	</div>
-	<!-- /container -->
-</body>
-</html>
diff --git a/examples/moviefun-plus/src/test/java/org/superbiz/moviefun/MoviesIT.java b/examples/moviefun-plus/src/test/java/org/superbiz/moviefun/MoviesIT.java
deleted file mode 100644
index f7dad98..0000000
--- a/examples/moviefun-plus/src/test/java/org/superbiz/moviefun/MoviesIT.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/**
- * 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.superbiz.moviefun;
-
-import static org.junit.Assert.assertTrue;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.ServerSocket;
-import java.util.Properties;
-
-import javax.ejb.embeddable.EJBContainer;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.tomee.embedded.EmbeddedTomEEContainer;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import com.gargoylesoftware.htmlunit.WebClient;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-
-public class MoviesIT {
-
-	private static EJBContainer container;
-	private static File webApp;
-	private static int port;
-
-	@BeforeClass
-	public static void start() throws IOException {
-		
-		// get a random unused port to use for http requests
-		ServerSocket server = new ServerSocket(0);
-		port = server.getLocalPort();
-		server.close();
-		
-		webApp = createWebApp();
-		Properties p = new Properties();
-		p.setProperty(EJBContainer.APP_NAME, "moviefun");
-		p.setProperty(EJBContainer.PROVIDER, "tomee-embedded"); // need web feature
-		p.setProperty(EJBContainer.MODULES, webApp.getAbsolutePath());
-		p.setProperty(EmbeddedTomEEContainer.TOMEE_EJBCONTAINER_HTTP_PORT, String.valueOf(port));
-		container = EJBContainer.createEJBContainer(p);
-	}
-
-	@AfterClass
-	public static void stop() {
-		if (container != null) {
-			container.close();
-		}
-		if (webApp != null) {
-			try {
-				FileUtils.forceDelete(webApp);
-			} catch (IOException e) {
-				FileUtils.deleteQuietly(webApp);
-			}
-		}
-	}
-
-	private static File createWebApp() throws IOException {
-		File file = new File(System.getProperty("java.io.tmpdir") + "/tomee-" + Math.random());
-		if (!file.mkdirs() && !file.exists()) {
-			throw new RuntimeException("can't create " + file.getAbsolutePath());
-		}
-
-		FileUtils.copyDirectory(new File("target/classes"), new File(file, "WEB-INF/classes"));
-		FileUtils.copyDirectory(new File("src/main/webapp"), file);
-
-		return file;
-	}
-
-	@Test
-	public void testShouldMakeSureWebappIsWorking() throws Exception {
-		WebClient webClient = new WebClient();
-		HtmlPage page = webClient.getPage("http://localhost:" + port + "/moviefun/setup.jsp");
-
-		assertMoviesPresent(page);
-
-		page = webClient.getPage("http://localhost:" + port + "/moviefun/moviefun");
-
-		assertMoviesPresent(page);
-		webClient.closeAllWindows();
-	}
-
-	private void assertMoviesPresent(HtmlPage page) {
-		String pageAsText = page.asText();
-		assertTrue(pageAsText.contains("Wedding Crashers"));
-		assertTrue(pageAsText.contains("Starsky & Hutch"));
-		assertTrue(pageAsText.contains("Shanghai Knights"));
-		assertTrue(pageAsText.contains("I-Spy"));
-		assertTrue(pageAsText.contains("The Royal Tenenbaums"));
-	}
-}
diff --git a/examples/moviefun-plus/src/test/java/org/superbiz/moviefun/MoviesTest.java b/examples/moviefun-plus/src/test/java/org/superbiz/moviefun/MoviesTest.java
deleted file mode 100644
index 2cf80a8..0000000
--- a/examples/moviefun-plus/src/test/java/org/superbiz/moviefun/MoviesTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * 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.superbiz.moviefun;
-
-import java.util.List;
-
-import javax.ejb.embeddable.EJBContainer;
-
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-public class MoviesTest {
-
-	private static EJBContainer ejbContainer;
-
-	@BeforeClass
-	public static void setUp() throws Exception {
-		ejbContainer = EJBContainer.createEJBContainer();
-	}
-
-	@AfterClass
-	public static void tearDown() {
-		if (ejbContainer != null) {
-			ejbContainer.close();
-		}
-	}
-
-	@Before
-	@After
-	public void clean() throws Exception {
-		MoviesBean movies = (MoviesBean) ejbContainer.getContext().lookup("java:global/moviefun/Movies!org.superbiz.moviefun.MoviesBean");
-		movies.clean();
-	}
-
-	@Test
-	public void testShouldAddAMovie() throws Exception {
-		MoviesBean movies = (MoviesBean) ejbContainer.getContext().lookup("java:global/moviefun/Movies!org.superbiz.moviefun.MoviesBean");
-		
-		Movie movie = new Movie();
-		movie.setDirector("Michael Bay");
-		movie.setGenre("Action");
-		movie.setRating(9);
-		movie.setTitle("Bad Boys");
-		movie.setYear(1995);
-		movies.addMovie(movie);
-
-		Assert.assertEquals(1, movies.count());
-		List<Movie> moviesFound = movies.findRange("title", "Bad Boys", 0, 10);
-
-		Assert.assertEquals(1, moviesFound.size());
-		Assert.assertEquals("Michael Bay", moviesFound.get(0).getDirector());
-		Assert.assertEquals("Action", moviesFound.get(0).getGenre());
-		Assert.assertEquals(9, moviesFound.get(0).getRating());
-		Assert.assertEquals("Bad Boys", moviesFound.get(0).getTitle());
-		Assert.assertEquals(1995, moviesFound.get(0).getYear());
-	}
-
-}
\ No newline at end of file
diff --git a/examples/moviefun-plus/src/test/resources/META-INF/application-client.xml b/examples/moviefun-plus/src/test/resources/META-INF/application-client.xml
deleted file mode 100644
index 1e91dca..0000000
--- a/examples/moviefun-plus/src/test/resources/META-INF/application-client.xml
+++ /dev/null
@@ -1 +0,0 @@
-<application-client/>
\ No newline at end of file
diff --git a/examples/movies-complete-meta/pom.xml b/examples/movies-complete-meta/pom.xml
index 57c410c..2ac24df 100644
--- a/examples/movies-complete-meta/pom.xml
+++ b/examples/movies-complete-meta/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>movies-complete-meta</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Movies Complete (Meta)</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -71,7 +71,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
 
diff --git a/examples/movies-complete/pom.xml b/examples/movies-complete/pom.xml
index 96e7b42..4bf2a1f 100644
--- a/examples/movies-complete/pom.xml
+++ b/examples/movies-complete/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>movies-complete</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Movies Complete</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -71,7 +71,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
 
diff --git a/examples/multi-jpa-provider-testing/pom.xml b/examples/multi-jpa-provider-testing/pom.xml
index 510992f..bdcbb96 100644
--- a/examples/multi-jpa-provider-testing/pom.xml
+++ b/examples/multi-jpa-provider-testing/pom.xml
@@ -17,137 +17,145 @@
     limitations under the License.
 -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.superbiz</groupId>
-  <artifactId>multi-jpa-provider-testing</artifactId>
-  <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
-  <name>OpenEJB :: Examples :: Multiple JPA providers</name>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.superbiz</groupId>
+    <artifactId>multi-jpa-provider-testing</artifactId>
+    <packaging>jar</packaging>
+    <version>1.1.0</version>
+    <name>OpenEJB :: Examples :: Multiple JPA providers</name>
 
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-  </properties>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
 
-  <build>
-    <defaultGoal>install</defaultGoal>
+    <build>
+        <defaultGoal>install</defaultGoal>
 
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>2.5.1</version>
-        <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
-        </configuration>
-      </plugin>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.5.1</version>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
 
-      <plugin> <!-- run tests twice, once with openjpa and once with hibernate -->
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.12.4</version>
-        <executions>
-          <execution>
-            <id>test-hibernate</id>
-            <phase>test</phase>
-            <goals>
-              <goal>test</goal>
-            </goals>
-            <configuration>
-              <skip>${maven.test.skip}</skip>
-              <systemPropertyVariables>
-                <javax.persistence.provider>org.hibernate.ejb.HibernatePersistence</javax.persistence.provider>
-              </systemPropertyVariables>
-            </configuration>
-          </execution>
-          <execution>
-            <id>test-openjpa</id>
-            <phase>test</phase>
-            <goals>
-              <goal>test</goal>
-            </goals>
-            <configuration>
-              <skip>${maven.test.skip}</skip>
-              <systemPropertyVariables>
-                <javax.persistence.provider>org.apache.openjpa.persistence.PersistenceProviderImpl</javax.persistence.provider>
-              </systemPropertyVariables>
-            </configuration>
-          </execution>
-        </executions>
-        <configuration>
-          <skip>true</skip>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
+            <plugin> <!-- run tests twice, once with openjpa and once with hibernate -->
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>2.12.4</version>
+                <executions>
+                    <execution>
+                        <id>test-hibernate</id>
+                        <phase>test</phase>
+                        <goals>
+                            <goal>test</goal>
+                        </goals>
+                        <configuration>
+                            <skip>${maven.test.skip}</skip>
+                            <systemPropertyVariables>
+                                <javax.persistence.provider>org.hibernate.ejb.HibernatePersistence</javax.persistence.provider>
+                            </systemPropertyVariables>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>test-openjpa</id>
+                        <phase>test</phase>
+                        <goals>
+                            <goal>test</goal>
+                        </goals>
+                        <configuration>
+                            <skip>${maven.test.skip}</skip>
+                            <systemPropertyVariables>
+                                <javax.persistence.provider>org.apache.openjpa.persistence.PersistenceProviderImpl</javax.persistence.provider>
+                            </systemPropertyVariables>
+                        </configuration>
+                    </execution>
+                </executions>
+                <configuration>
+                    <skip>true</skip>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 
-  <repositories>
-    <repository>
-      <id>apache-m2-snapshot</id>
-      <name>Apache Snapshot Repository</name>
-      <url>http://repository.apache.org/snapshots</url>
-    </repository>
-  </repositories>
+    <repositories>
+        <repository>
+            <id>apache-m2-snapshot</id>
+            <name>Apache Snapshot Repository</name>
+            <url>http://repository.apache.org/snapshots</url>
+        </repository>
+    </repositories>
 
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.openejb</groupId>
-      <artifactId>javaee-api</artifactId>
-      <version>6.0-4</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>4.10</version>
-      <scope>test</scope>
-    </dependency>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.openejb</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0-4</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.10</version>
+            <scope>test</scope>
+        </dependency>
 
-    <dependency>
-      <groupId>org.apache.openejb</groupId>
-      <artifactId>arquillian-openejb-embedded-4</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.jboss.shrinkwrap.resolver</groupId>
-      <artifactId>shrinkwrap-resolver-impl-maven</artifactId>
-      <version>1.1.0-alpha-3</version>
-      <scope>test</scope>
-    </dependency>
+        <dependency>
+            <groupId>org.apache.openejb</groupId>
+            <artifactId>arquillian-openejb-embedded-4</artifactId>
+            <version>4.5.1</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.shrinkwrap.resolver</groupId>
+            <artifactId>shrinkwrap-resolver-impl-maven</artifactId>
+            <version>2.0.0-alpha-5</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.shrinkwrap</groupId>
+            <artifactId>shrinkwrap-spi</artifactId>
+            <version>1.1.1-alpha-2</version>
+            <scope>test</scope>
+        </dependency>
 
-    <!--
-      don't be shy and put all JPA provider in the classpath
-      otherwise arquillian has some difficulties in embedded mode to find your classes
-    -->
-    <dependency>
-      <groupId>org.apache.openjpa</groupId>
-      <artifactId>openjpa</artifactId>
-      <version>2.2.0</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency> <!-- just a facade pom which will bring hibernate for us -->
-      <groupId>org.apache.openejb</groupId>
-      <artifactId>openejb-core-hibernate</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
-      <scope>test</scope>
-      <type>pom</type>
-    </dependency>
-  </dependencies>
+        <!--
+          don't be shy and put all JPA provider in the classpath
+          otherwise arquillian has some difficulties in embedded mode to find your classes
+        -->
+        <dependency>
+            <groupId>org.apache.openjpa</groupId>
+            <artifactId>openjpa</artifactId>
+            <version>2.2.0</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency> <!-- just a facade pom which will bring hibernate for us -->
+            <groupId>org.apache.openejb</groupId>
+            <artifactId>openejb-core-hibernate</artifactId>
+            <version>4.5.1</version>
+            <scope>test</scope>
+            <type>pom</type>
+        </dependency>
+    </dependencies>
 
-  <!-- This section allows you to configure where to publish libraries for
-    sharing. It is not required and may be deleted. For more information see:
-    http://maven.apache.org/plugins/maven-deploy-plugin/ -->
-  <distributionManagement>
-    <repository>
-      <id>localhost</id>
-      <url>file://${basedir}/target/repo/</url>
-    </repository>
-    <snapshotRepository>
-      <id>localhost</id>
-      <url>file://${basedir}/target/snapshot-repo/</url>
-    </snapshotRepository>
-  </distributionManagement>
+    <!-- This section allows you to configure where to publish libraries for
+   sharing. It is not required and may be deleted. For more information see:
+   http://maven.apache.org/plugins/maven-deploy-plugin/ -->
+    <distributionManagement>
+        <repository>
+            <id>localhost</id>
+            <url>file://${basedir}/target/repo/</url>
+        </repository>
+        <snapshotRepository>
+            <id>localhost</id>
+            <url>file://${basedir}/target/snapshot-repo/</url>
+        </snapshotRepository>
+    </distributionManagement>
 
 </project>
diff --git a/examples/multi-jpa-provider-testing/src/test/java/org/superbiz/enricher/jpa/HibernateEnricher.java b/examples/multi-jpa-provider-testing/src/test/java/org/superbiz/enricher/jpa/HibernateEnricher.java
index ad2cca2..601556b 100644
--- a/examples/multi-jpa-provider-testing/src/test/java/org/superbiz/enricher/jpa/HibernateEnricher.java
+++ b/examples/multi-jpa-provider-testing/src/test/java/org/superbiz/enricher/jpa/HibernateEnricher.java
@@ -23,7 +23,6 @@
 public class HibernateEnricher implements AuxiliaryArchiveProcessor {
     @Override
     public void process(final Archive<?> auxiliaryArchive) {
-        Enrichers.wrap(auxiliaryArchive)
-                .addAsLibraries(Enrichers.resolve("src/test/resources/hibernate-pom.xml"));
+        Enrichers.wrap(auxiliaryArchive).addAsLibraries(Enrichers.resolve("src/test/resources/hibernate-pom.xml"));
     }
 }
diff --git a/examples/multi-jpa-provider-testing/src/test/java/org/superbiz/enricher/jpa/OpenJPAEnricher.java b/examples/multi-jpa-provider-testing/src/test/java/org/superbiz/enricher/jpa/OpenJPAEnricher.java
index d961501..92e2fc7 100644
--- a/examples/multi-jpa-provider-testing/src/test/java/org/superbiz/enricher/jpa/OpenJPAEnricher.java
+++ b/examples/multi-jpa-provider-testing/src/test/java/org/superbiz/enricher/jpa/OpenJPAEnricher.java
@@ -23,7 +23,6 @@
 public class OpenJPAEnricher implements AuxiliaryArchiveProcessor {
     @Override
     public void process(final Archive<?> auxiliaryArchive) {
-        Enrichers.wrap(auxiliaryArchive)
-                .addAsLibraries(Enrichers.resolve("src/test/resources/openjpa-pom.xml"));
+        Enrichers.wrap(auxiliaryArchive).addAsLibraries(Enrichers.resolve("src/test/resources/openjpa-pom.xml"));
     }
 }
diff --git a/examples/multi-jpa-provider-testing/src/test/java/org/superbiz/enricher/maven/Enrichers.java b/examples/multi-jpa-provider-testing/src/test/java/org/superbiz/enricher/maven/Enrichers.java
index 2f5705a..7e7b958 100644
--- a/examples/multi-jpa-provider-testing/src/test/java/org/superbiz/enricher/maven/Enrichers.java
+++ b/examples/multi-jpa-provider-testing/src/test/java/org/superbiz/enricher/maven/Enrichers.java
@@ -17,10 +17,11 @@
  */
 package org.superbiz.enricher.maven;
 
-import org.jboss.shrinkwrap.api.Archive;
-import org.jboss.shrinkwrap.api.spec.WebArchive;
-import org.jboss.shrinkwrap.resolver.api.DependencyResolvers;
-import org.jboss.shrinkwrap.resolver.api.maven.MavenDependencyResolver;
+import org.jboss.shrinkwrap.api.container.LibraryContainer;
+import org.jboss.shrinkwrap.resolver.api.maven.Maven;
+import org.jboss.shrinkwrap.resolver.api.maven.ScopeType;
+import org.jboss.shrinkwrap.resolver.api.maven.strategy.AcceptScopesStrategy;
+import org.jboss.shrinkwrap.resolver.api.maven.strategy.TransitiveStrategy;
 
 import javax.enterprise.inject.ResolutionException;
 import java.io.File;
@@ -36,26 +37,28 @@
 
     public static File[] resolve(final String pom) {
         if (!CACHE.containsKey(pom)) {
-            try { // try offline first since it is generally faster
-                CACHE.put(pom, DependencyResolvers.use(MavenDependencyResolver.class)
-                        .goOffline()
-                        .loadMetadataFromPom(pom)
-                        .scope("compile")
-                        .resolveAsFiles());
+            try {
+
+                // try offline first since it is generally faster
+                CACHE.put(pom, Maven.resolver()
+                        .offline(true)
+                        .loadPomFromFile(pom)
+                        .importRuntimeAndTestDependencies(new AcceptScopesStrategy(ScopeType.COMPILE))
+                        .asFile());
             } catch (ResolutionException re) { // try on central
-                CACHE.put(pom, DependencyResolvers.use(MavenDependencyResolver.class)
-                        .loadMetadataFromPom(pom)
-                        .scope("compile")
-                        .resolveAsFiles());
+                CACHE.put(pom, Maven.resolver()
+                        .loadPomFromFile(pom)
+                        .importRuntimeAndTestDependencies(new AcceptScopesStrategy(ScopeType.COMPILE))
+                        .asFile());
             }
         }
         return CACHE.get(pom);
     }
 
-    public static WebArchive wrap(final Archive<?> archive) {
-        if (!(WebArchive.class.isInstance(archive))) {
+    public static LibraryContainer wrap(final org.jboss.shrinkwrap.api.Archive<?> archive) {
+        if (!(LibraryContainer.class.isInstance(archive))) {
             throw new IllegalArgumentException("Unsupported archive type: " + archive.getClass().getName());
         }
-        return (WebArchive) archive;
+        return (LibraryContainer) archive;
     }
 }
diff --git a/examples/multi-jpa-provider-testing/src/test/resources/hibernate-pom.xml b/examples/multi-jpa-provider-testing/src/test/resources/hibernate-pom.xml
index 218d893..dca207a 100644
--- a/examples/multi-jpa-provider-testing/src/test/resources/hibernate-pom.xml
+++ b/examples/multi-jpa-provider-testing/src/test/resources/hibernate-pom.xml
@@ -27,7 +27,7 @@
     <dependency>
       <groupId>org.hibernate</groupId>
       <artifactId>hibernate-entitymanager</artifactId>
-      <version>4.1.6.Final</version>
+      <version>4.1.8.Final</version>
       <exclusions>
         <exclusion>
           <groupId>org.hibernate.javax.persistence</groupId>
diff --git a/examples/multiple-arquillian-adapters/pom.xml b/examples/multiple-arquillian-adapters/pom.xml
index b452568..a5e7a47 100644
--- a/examples/multiple-arquillian-adapters/pom.xml
+++ b/examples/multiple-arquillian-adapters/pom.xml
@@ -23,14 +23,14 @@
   <groupId>org.superbiz</groupId>
   <artifactId>multiple-arquillian-adapters</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Multiple Arquillian Adapters</name>
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 
-    <tomee.version>1.5.1-SNAPSHOT</tomee.version>
-    <openejb.version>4.5.1-SNAPSHOT</openejb.version>
+    <tomee.version>1.5.1</tomee.version>
+    <openejb.version>4.5.1</openejb.version>
     <arquillian.version>1.0.1.Final</arquillian.version>
   </properties>
 
diff --git a/examples/multiple-tomee-arquillian/pom.xml b/examples/multiple-tomee-arquillian/pom.xml
index 5badd70..e988b6f 100644
--- a/examples/multiple-tomee-arquillian/pom.xml
+++ b/examples/multiple-tomee-arquillian/pom.xml
@@ -23,11 +23,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>multiple-tomee-arquillian</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Multiple TomEE with Arquillian</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>1.5.1-SNAPSHOT</tomee.version>
+    <tomee.version>1.5.1</tomee.version>
   </properties>
   <build>
     <defaultGoal>install</defaultGoal>
@@ -86,7 +86,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -110,7 +110,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>ziplock</artifactId>
-      <version>1.5.1-SNAPSHOT</version>
+      <version>1.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -129,4 +129,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/persistence-fragment/pom.xml b/examples/persistence-fragment/pom.xml
index ffaa5e1..0679ef7 100644
--- a/examples/persistence-fragment/pom.xml
+++ b/examples/persistence-fragment/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>persistence-fragment</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Persistence Fragment</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -89,4 +89,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/pojo-webservice/pom.xml b/examples/pojo-webservice/pom.xml
index bc0ddb0..9e3737d 100644
--- a/examples/pojo-webservice/pom.xml
+++ b/examples/pojo-webservice/pom.xml
@@ -21,11 +21,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>pojo-webservice</artifactId>
   <packaging>war</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Web Examples :: Pojo WS</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>1.5.1-SNAPSHOT</tomee.version>
+    <tomee.version>1.5.1</tomee.version>
   </properties>
   <repositories>
     <repository>
@@ -62,7 +62,7 @@
       <plugin> <!-- http://localhost:8080/pojo-webservice?wsdl -->
         <groupId>org.apache.openejb.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>1.0.1-SNAPSHOT</version>
+        <version>1.1.0</version>
         <configuration>
           <tomeeVersion>${tomee.version}</tomeeVersion>
           <tomeeClassifier>plus</tomeeClassifier>
diff --git a/examples/polling-parent/polling-client/pom.xml b/examples/polling-parent/polling-client/pom.xml
index 3dd9ee9..9596b6c 100644
--- a/examples/polling-parent/polling-client/pom.xml
+++ b/examples/polling-parent/polling-client/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>polling-parent</artifactId>
     <groupId>jug</groupId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.1.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/examples/polling-parent/polling-core/pom.xml b/examples/polling-parent/polling-core/pom.xml
index 7155830..5cf6990 100644
--- a/examples/polling-parent/polling-core/pom.xml
+++ b/examples/polling-parent/polling-core/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>polling-parent</artifactId>
     <groupId>jug</groupId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.1.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/examples/polling-parent/polling-domain/pom.xml b/examples/polling-parent/polling-domain/pom.xml
index 48c45f8..60c2874 100644
--- a/examples/polling-parent/polling-domain/pom.xml
+++ b/examples/polling-parent/polling-domain/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>polling-parent</artifactId>
     <groupId>jug</groupId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.1.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/examples/polling-parent/polling-web/pom.xml b/examples/polling-parent/polling-web/pom.xml
index fcbaee8..fdb0db2 100644
--- a/examples/polling-parent/polling-web/pom.xml
+++ b/examples/polling-parent/polling-web/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>polling-parent</artifactId>
     <groupId>jug</groupId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.1.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
@@ -79,7 +79,7 @@
       <plugin>
         <groupId>org.apache.openejb.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>1.0.1-SNAPSHOT</version>
+        <version>1.1.0</version>
         <configuration>
           <tomeeClassifier>jaxrs</tomeeClassifier>
         </configuration>
diff --git a/examples/polling-parent/pom.xml b/examples/polling-parent/pom.xml
index 3a7f370..1cb6982 100644
--- a/examples/polling-parent/pom.xml
+++ b/examples/polling-parent/pom.xml
@@ -23,7 +23,7 @@
 
   <groupId>jug</groupId>
   <artifactId>polling-parent</artifactId>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <packaging>pom</packaging>
   <name>OpenEJB :: Examples :: Polling</name>
 
@@ -84,7 +84,7 @@
       <dependency>
         <groupId>org.apache.openejb</groupId>
         <artifactId>openejb-api</artifactId>
-        <version>4.5.1-SNAPSHOT</version>
+        <version>4.5.1</version>
         <scope>provided</scope>
       </dependency>
 
@@ -92,13 +92,13 @@
       <dependency>
         <groupId>org.apache.openejb</groupId>
         <artifactId>openejb-core</artifactId>
-        <version>4.5.1-SNAPSHOT</version>
+        <version>4.5.1</version>
         <scope>provided</scope>
       </dependency>
       <dependency>
         <groupId>org.apache.openejb</groupId>
         <artifactId>openejb-cxf-rs</artifactId>
-        <version>4.5.1-SNAPSHOT</version>
+        <version>4.5.1</version>
         <scope>provided</scope>
       </dependency>
 
@@ -106,19 +106,19 @@
       <dependency>
         <groupId>org.apache.openejb</groupId>
         <artifactId>arquillian-tomee-embedded</artifactId>
-        <version>1.5.1-SNAPSHOT</version>
+        <version>1.5.1</version>
         <scope>test</scope>
       </dependency>
       <dependency>
         <groupId>org.apache.openejb</groupId>
         <artifactId>tomee-webservices</artifactId>
-        <version>1.5.1-SNAPSHOT</version>
+        <version>1.5.1</version>
         <scope>test</scope>
       </dependency>
       <dependency>
         <groupId>org.apache.openejb</groupId>
         <artifactId>ziplock</artifactId>
-        <version>1.5.1-SNAPSHOT</version>
+        <version>1.5.1</version>
         <scope>test</scope>
       </dependency>
       <dependency>
diff --git a/examples/pom.xml b/examples/pom.xml
index a2541c6..bbd417e 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>openejb</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>examples</artifactId>
@@ -45,7 +45,6 @@
     <module>cdi-interceptors</module>
     <module>cdi-produces-disposes</module>
     <module>cdi-produces-field</module>
-    <module>cdi-query</module>
     <module>cdi-realm</module>
     <module>cdi-request-scope</module>
     <module>cdi-session-scope</module>
@@ -87,7 +86,6 @@
     <module>mbean-auto-registration</module>
     <module>movies-complete-meta</module>
     <module>movies-complete</module>
-    <module>moviefun-old</module>
     <module>multi-jpa-provider-testing</module>
     <module>multiple-arquillian-adapters</module>
     <module>multiple-tomee-arquillian</module>
diff --git a/examples/projectstage-demo/pom.xml b/examples/projectstage-demo/pom.xml
index fba3f55..90aba1a 100644
--- a/examples/projectstage-demo/pom.xml
+++ b/examples/projectstage-demo/pom.xml
@@ -23,7 +23,7 @@
 
   <groupId>org.superbiz</groupId>
   <artifactId>projectstage-demo</artifactId>
-  <version>1.0-SNAPSHOT</version>
+  <version>1.0</version>
   <name>OpenEJB :: Examples :: DeltaSpike ProjectStage</name>
 
   <dependencies>
@@ -66,7 +66,7 @@
   </dependencies>
 
   <properties>
-    <tomee.version>1.5.1-SNAPSHOT</tomee.version>
+    <tomee.version>1.5.1</tomee.version>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   </properties>
 
diff --git a/examples/quartz-app/pom.xml b/examples/quartz-app/pom.xml
index 772a2f8..07d522d 100644
--- a/examples/quartz-app/pom.xml
+++ b/examples/quartz-app/pom.xml
@@ -20,7 +20,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz.quartz</groupId>
   <artifactId>quartz-app</artifactId>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <packaging>pom</packaging>
   <name>OpenEJB :: Examples :: Quartz</name>
   <properties>
@@ -68,7 +68,7 @@
       <dependency>
         <groupId>org.apache.openejb</groupId>
         <artifactId>openejb-core</artifactId>
-        <version>4.5.1-SNAPSHOT</version>
+        <version>4.5.1</version>
       </dependency>
       <dependency>
         <groupId>org.apache.openejb</groupId>
diff --git a/examples/quartz-app/quartz-beans/pom.xml b/examples/quartz-app/quartz-beans/pom.xml
index 7b96bee..ea05a47 100644
--- a/examples/quartz-app/quartz-beans/pom.xml
+++ b/examples/quartz-app/quartz-beans/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.superbiz.quartz</groupId>
     <artifactId>quartz-app</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.1.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>quartz-beans</artifactId>
@@ -30,7 +30,7 @@
     <dependency>
       <groupId>org.superbiz.quartz</groupId>
       <artifactId>quartz-ra</artifactId>
-      <version>1.1-SNAPSHOT</version>
+      <version>1.1.0</version>
       <scope>test</scope>
     </dependency>
     <dependency>
diff --git a/examples/quartz-app/quartz-ra/pom.xml b/examples/quartz-app/quartz-ra/pom.xml
index f821520..561d2a1 100644
--- a/examples/quartz-app/quartz-ra/pom.xml
+++ b/examples/quartz-app/quartz-ra/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.superbiz.quartz</groupId>
     <artifactId>quartz-app</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.1.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>quartz-ra</artifactId>
diff --git a/examples/realm-in-tomee/README.md b/examples/realm-in-tomee/README.md
index 8c1fee0..2c3f7da 100644
--- a/examples/realm-in-tomee/README.md
+++ b/examples/realm-in-tomee/README.md
@@ -30,5 +30,5 @@
 
 ## Test it
 
-Go to http://localhost:8080/realm-in-tomee-1.1-SNAPSHOT/, then connect using
+Go to http://localhost:8080/realm-in-tomee-1.1.0-SNAPSHOT/, then connect using
 the login/password tomee/tomee. You should see "Home".
diff --git a/examples/realm-in-tomee/pom.xml b/examples/realm-in-tomee/pom.xml
index 7a1703b..4bb281f 100644
--- a/examples/realm-in-tomee/pom.xml
+++ b/examples/realm-in-tomee/pom.xml
@@ -21,7 +21,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>realm-in-tomee</artifactId>
   <packaging>war</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: DataSource Realm</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -86,4 +86,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/reload-persistence-unit-properties/pom.xml b/examples/reload-persistence-unit-properties/pom.xml
index 05c7ad7..32bbffb 100644
--- a/examples/reload-persistence-unit-properties/pom.xml
+++ b/examples/reload-persistence-unit-properties/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>reload-persistence-unit-properties</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Reloadable Persistence Unit Properties</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -71,7 +71,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <dependency>
diff --git a/examples/resources-declared-in-webapp/pom.xml b/examples/resources-declared-in-webapp/pom.xml
index 5d74389..378671e 100644
--- a/examples/resources-declared-in-webapp/pom.xml
+++ b/examples/resources-declared-in-webapp/pom.xml
@@ -21,12 +21,12 @@
   <groupId>org.superbiz</groupId>
   <artifactId>resources-declared-in-webapp</artifactId>
   <packaging>war</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Web Examples :: Resource Declared In A Webapp</name>
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <openejb.version>4.5.1-SNAPSHOT</openejb.version>
+    <openejb.version>4.5.1</openejb.version>
   </properties>
 
   <repositories>
diff --git a/examples/rest-applicationcomposer-mockito/pom.xml b/examples/rest-applicationcomposer-mockito/pom.xml
index 1a26ca8..d8fe389 100644
--- a/examples/rest-applicationcomposer-mockito/pom.xml
+++ b/examples/rest-applicationcomposer-mockito/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>rest-applicationcomposer-mockito</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: REST, Mockito and Application Composer</name>
 
   <properties>
@@ -75,19 +75,19 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-cxf-rs</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-mockito</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/rest-applicationcomposer/pom.xml b/examples/rest-applicationcomposer/pom.xml
index 16347cd..8e4951e 100644
--- a/examples/rest-applicationcomposer/pom.xml
+++ b/examples/rest-applicationcomposer/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>rest-applicationcomposer</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: REST and Application Composer</name>
 
   <properties>
@@ -75,13 +75,13 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-cxf-rs</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/rest-example-with-application/pom.xml b/examples/rest-example-with-application/pom.xml
index 0ce0a64..93e33bb 100644
--- a/examples/rest-example-with-application/pom.xml
+++ b/examples/rest-example-with-application/pom.xml
@@ -21,12 +21,12 @@
   <groupId>org.superbiz</groupId>
   <artifactId>rest-example-with-application</artifactId>
   <packaging>war</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Web Examples :: REST Example With Application</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <openejb.version>4.5.1-SNAPSHOT</openejb.version>
-    <tomee.version>1.5.1-SNAPSHOT</tomee.version>
+    <openejb.version>4.5.1</openejb.version>
+    <tomee.version>1.5.1</tomee.version>
   </properties>
   <repositories>
     <repository>
@@ -109,4 +109,4 @@
       <url>file://${project.build.outputDirectory}/repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/rest-example-with-application/src/main/webapp/index.html b/examples/rest-example-with-application/src/main/webapp/index.html
index 008d472..ca0b92d 100644
--- a/examples/rest-example-with-application/src/main/webapp/index.html
+++ b/examples/rest-example-with-application/src/main/webapp/index.html
@@ -25,8 +25,8 @@
 	    <p>
             Two rest services are deployed:
             <ul>
-                <li>A simple Pojo one: http://localhost:1234/rest-example-with-application-1.1-SNAPSHOT/rest-prefix/pojo</li>
-                <li>An EJB one: http://localhost:1234/rest-example-with-application-1.1-SNAPSHOT/rest-prefix/ejb</li>
+                <li>A simple Pojo one: http://localhost:1234/rest-example-with-application-1.1.0/rest-prefix/pojo</li>
+                <li>An EJB one: http://localhost:1234/rest-example-with-application-1.1.0/rest-prefix/ejb</li>
             </ul>
 	    </p>
         <p>
diff --git a/examples/rest-example/pom.xml b/examples/rest-example/pom.xml
index c4ce790..633ac2a 100644
--- a/examples/rest-example/pom.xml
+++ b/examples/rest-example/pom.xml
@@ -21,12 +21,12 @@
   <groupId>org.superbiz</groupId>
   <artifactId>rest-example</artifactId>
   <packaging>war</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Web Examples :: REST Example</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <openejb.version>4.5.1-SNAPSHOT</openejb.version>
-    <tomee.version>1.5.1-SNAPSHOT</tomee.version>
+    <openejb.version>4.5.1</openejb.version>
+    <tomee.version>1.5.1</tomee.version>
   </properties>
   <repositories>
     <repository>
@@ -70,7 +70,7 @@
       <plugin>
         <groupId>org.apache.openejb.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>1.0.1-SNAPSHOT</version>
+        <version>1.0.1</version>
         <configuration>
           <tomeeVersion>${tomee.version}</tomeeVersion>
           <tomeeClassifier>plus</tomeeClassifier>
@@ -79,12 +79,12 @@
       <plugin>
         <groupId>org.apache.openejb.maven</groupId>
         <artifactId>tomee-embedded-maven-plugin</artifactId>
-        <version>1.0.1-SNAPSHOT</version>
+        <version>1.0.1</version>
         <dependencies>
           <dependency>
             <groupId>org.apache.openejb</groupId>
             <artifactId>tomee-jaxrs</artifactId>
-            <version>1.5.1-SNAPSHOT</version>
+            <version>1.5.1</version>
           </dependency>
         </dependencies>
       </plugin>
@@ -106,34 +106,6 @@
           </webapps>
         </configuration>
       </plugin>
-      <plugin>
-        <groupId>org.apache.openejb.maven</groupId>
-        <version>1.0.1-SNAPSHOT</version>
-        <artifactId>spi-helper-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>generate-scan-xml</id>
-            <goals>
-              <goal>generate</goal>
-            </goals>
-          </execution>
-        </executions>
-        <configuration>
-          <outputFilename>${project.build.directory}/${project.build.finalName}/WEB-INF/classes/META-INF/scan.xml</outputFilename>
-        </configuration>
-        <dependencies>
-          <dependency> <!-- mandatory for the scanning since we enhanced our entities -->
-            <groupId>org.apache.openjpa</groupId>
-            <artifactId>openjpa</artifactId>
-            <version>2.2.0</version>
-          </dependency>
-          <dependency> <!-- to get the jee6 profile without configuration -->
-            <groupId>org.apache.openejb.maven</groupId>
-            <version>1.0.1-SNAPSHOT</version>
-            <artifactId>spi-helper-jee6-profile</artifactId>
-          </dependency>
-        </dependencies>
-      </plugin>
       <plugin> <!-- needed otherwise it will not work at runtime -->
         <groupId>org.apache.openjpa</groupId>
         <artifactId>openjpa-maven-plugin</artifactId>
diff --git a/examples/rest-on-ejb/pom.xml b/examples/rest-on-ejb/pom.xml
index 0f99540..4e8ca67 100644
--- a/examples/rest-on-ejb/pom.xml
+++ b/examples/rest-on-ejb/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>rest-on-ejb</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: REST and EJB</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -70,13 +70,13 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-cxf-rs</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -101,4 +101,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/rest-xml-json/pom.xml b/examples/rest-xml-json/pom.xml
index 3bb3c59..2671e75 100644
--- a/examples/rest-xml-json/pom.xml
+++ b/examples/rest-xml-json/pom.xml
@@ -21,7 +21,7 @@
 
   <groupId>org.superbiz</groupId>
   <artifactId>rest-xml-json</artifactId>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: REST XML JSON</name>
 
   <properties>
@@ -74,7 +74,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-cxf-rs</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/scala-basic/build.sbt b/examples/scala-basic/build.sbt
index b99e8e0..efcccc5 100644
--- a/examples/scala-basic/build.sbt
+++ b/examples/scala-basic/build.sbt
@@ -17,7 +17,7 @@
 
 name := "scala-basic"
 
-version := "1.1-SNAPSHOT"
+version := "1.1.0"
 
 scalaVersion := "2.9.1"
 
@@ -28,7 +28,7 @@
 
 libraryDependencies ++= Seq(
     "org.apache.openejb" % "javaee-api" % "6.0-4",
-    "org.apache.openejb" % "openejb-core" % "4.5.1-SNAPSHOT" % "test",
+    "org.apache.openejb" % "openejb-core" % "4.5.1" % "test",
     "org.scalatest" %% "scalatest" % "1.6.1" % "test"
 )
 
diff --git a/examples/scala-basic/pom.xml b/examples/scala-basic/pom.xml
index b6a7752..8ee8699 100644
--- a/examples/scala-basic/pom.xml
+++ b/examples/scala-basic/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>scala-basic</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Basic Scala</name>
 
   <properties>
@@ -127,7 +127,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/schedule-events/pom.xml b/examples/schedule-events/pom.xml
index e37f35e..0480c0c 100644
--- a/examples/schedule-events/pom.xml
+++ b/examples/schedule-events/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>schedule-events</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: @Schedule Events</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -89,4 +89,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/schedule-expression/pom.xml b/examples/schedule-expression/pom.xml
index 9d6c1c4..5c50a54 100644
--- a/examples/schedule-expression/pom.xml
+++ b/examples/schedule-expression/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>schedule-expression</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: ScheduleExpression</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -89,4 +89,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/schedule-methods-meta/pom.xml b/examples/schedule-methods-meta/pom.xml
index 15f1df4..838da22 100644
--- a/examples/schedule-methods-meta/pom.xml
+++ b/examples/schedule-methods-meta/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>schedule-methods-meta</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: @Schedule Methods (Meta)</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -89,4 +89,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/schedule-methods/pom.xml b/examples/schedule-methods/pom.xml
index 888944d..cf4875d 100644
--- a/examples/schedule-methods/pom.xml
+++ b/examples/schedule-methods/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>schedule-methods</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: @Schedule Methods</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -89,4 +89,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/server-events/pom.xml b/examples/server-events/pom.xml
index dabe1b6..a6d0f11 100644
--- a/examples/server-events/pom.xml
+++ b/examples/server-events/pom.xml
@@ -25,7 +25,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>server-events</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Server Events</name>
 
   <properties>
@@ -68,7 +68,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>provided</scope>
     </dependency>
 
@@ -82,7 +82,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>arquillian-openejb-embedded-4</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -101,4 +101,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/simple-cdi-interceptor/pom.xml b/examples/simple-cdi-interceptor/pom.xml
index cc0020b..5a25518 100644
--- a/examples/simple-cdi-interceptor/pom.xml
+++ b/examples/simple-cdi-interceptor/pom.xml
@@ -18,7 +18,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-cdi-interceptor</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Simple CDI Interceptor</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -64,7 +64,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/simple-cmp2/pom.xml b/examples/simple-cmp2/pom.xml
index 9b850e2..10238d8 100644
--- a/examples/simple-cmp2/pom.xml
+++ b/examples/simple-cmp2/pom.xml
@@ -24,11 +24,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-cmp2</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Simple CMP2 Entity</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <openejb.version>4.5.1-SNAPSHOT</openejb.version>
+    <openejb.version>4.5.1</openejb.version>
   </properties>
   <build>
     <defaultGoal>install</defaultGoal>
@@ -107,7 +107,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
 
diff --git a/examples/simple-mdb-and-cdi/pom.xml b/examples/simple-mdb-and-cdi/pom.xml
index c6eed7c..a003663 100644
--- a/examples/simple-mdb-and-cdi/pom.xml
+++ b/examples/simple-mdb-and-cdi/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-mdb-and-cdi</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Simple MDB With a CDI Injection</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -89,4 +89,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/simple-mdb-with-descriptor/pom.xml b/examples/simple-mdb-with-descriptor/pom.xml
index 1ed06f2..15414d0 100644
--- a/examples/simple-mdb-with-descriptor/pom.xml
+++ b/examples/simple-mdb-with-descriptor/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-mdb-with-descriptor</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Simple MDB Using Deployment Descriptor Example</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -71,7 +71,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
 
diff --git a/examples/simple-mdb/pom.xml b/examples/simple-mdb/pom.xml
index 66ef2cf..9703bdf 100644
--- a/examples/simple-mdb/pom.xml
+++ b/examples/simple-mdb/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-mdb</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Simple MDB Example</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -89,4 +89,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/simple-osgi/pom.xml b/examples/simple-osgi/pom.xml
index 87e52ae..cfbc96e 100644
--- a/examples/simple-osgi/pom.xml
+++ b/examples/simple-osgi/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-osgi</artifactId>
   <packaging>pom</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <modules>
     <module>simple-osgi-api</module>
     <module>simple-osgi-core</module>
@@ -99,7 +99,7 @@
       <dependency>
         <groupId>org.apache.openejb</groupId>
         <artifactId>openejb-core</artifactId>
-        <version>4.5.1-SNAPSHOT</version>
+        <version>4.5.1</version>
         <scope>test</scope>
       </dependency>
       <dependency>
diff --git a/examples/simple-osgi/simple-osgi-api/pom.xml b/examples/simple-osgi/simple-osgi-api/pom.xml
index f498b40..eca89d4 100644
--- a/examples/simple-osgi/simple-osgi-api/pom.xml
+++ b/examples/simple-osgi/simple-osgi-api/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <artifactId>simple-osgi</artifactId>
     <groupId>org.superbiz</groupId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.1.0</version>
   </parent>
 
   <artifactId>simple-osgi-api</artifactId>
@@ -56,4 +56,4 @@
   </dependencies>
 
 
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/simple-osgi/simple-osgi-camel-client/pom.xml b/examples/simple-osgi/simple-osgi-camel-client/pom.xml
index 49a7225..5d636a3 100644
--- a/examples/simple-osgi/simple-osgi-camel-client/pom.xml
+++ b/examples/simple-osgi/simple-osgi-camel-client/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <artifactId>simple-osgi</artifactId>
     <groupId>org.superbiz</groupId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.1.0</version>
   </parent>
 
   <artifactId>simple-osgi-camel-client</artifactId>
@@ -72,4 +72,4 @@
     </dependency>
   </dependencies>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/simple-osgi/simple-osgi-core/pom.xml b/examples/simple-osgi/simple-osgi-core/pom.xml
index 3a9d98f..1cfce2e 100644
--- a/examples/simple-osgi/simple-osgi-core/pom.xml
+++ b/examples/simple-osgi/simple-osgi-core/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <artifactId>simple-osgi</artifactId>
     <groupId>org.superbiz</groupId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.1.0</version>
   </parent>
 
   <artifactId>simple-osgi-core</artifactId>
@@ -83,4 +83,4 @@
     </dependency>
   </dependencies>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/simple-osgi/simple-osgi-local-lookup-client/pom.xml b/examples/simple-osgi/simple-osgi-local-lookup-client/pom.xml
index cb5d4a7..6c4d770 100644
--- a/examples/simple-osgi/simple-osgi-local-lookup-client/pom.xml
+++ b/examples/simple-osgi/simple-osgi-local-lookup-client/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>simple-osgi</artifactId>
     <groupId>org.superbiz</groupId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.1.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/examples/simple-osgi/simple-osgi-remote-client/pom.xml b/examples/simple-osgi/simple-osgi-remote-client/pom.xml
index cc0b903..75b1c12 100644
--- a/examples/simple-osgi/simple-osgi-remote-client/pom.xml
+++ b/examples/simple-osgi/simple-osgi-remote-client/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>simple-osgi</artifactId>
     <groupId>org.superbiz</groupId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.1.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
@@ -39,7 +39,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-client</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
     </dependency>
     <dependency>
       <groupId>${project.groupId}</groupId>
diff --git a/examples/simple-osgi/simple-osgi-service-injection/pom.xml b/examples/simple-osgi/simple-osgi-service-injection/pom.xml
index 7873c74..3eb4b21 100644
--- a/examples/simple-osgi/simple-osgi-service-injection/pom.xml
+++ b/examples/simple-osgi/simple-osgi-service-injection/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>simple-osgi</artifactId>
     <groupId>org.superbiz</groupId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.1.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/examples/simple-osgi/standard-ejbd-server/pom.xml b/examples/simple-osgi/standard-ejbd-server/pom.xml
index c55ea81..0c3ecac 100644
--- a/examples/simple-osgi/standard-ejbd-server/pom.xml
+++ b/examples/simple-osgi/standard-ejbd-server/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>simple-osgi</artifactId>
     <groupId>org.superbiz</groupId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.1.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
@@ -42,7 +42,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-ejbd</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
     </dependency>
     <dependency>
       <groupId>${project.groupId}</groupId>
diff --git a/examples/simple-rest/pom.xml b/examples/simple-rest/pom.xml
index fdeb14f..fd6a892 100644
--- a/examples/simple-rest/pom.xml
+++ b/examples/simple-rest/pom.xml
@@ -21,7 +21,7 @@
 
   <groupId>org.superbiz</groupId>
   <artifactId>simple-rest</artifactId>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Simple REST</name>
 
   <properties>
@@ -74,7 +74,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-cxf-rs</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/simple-singleton/pom.xml b/examples/simple-singleton/pom.xml
index 628afaa..1fc47bf 100644
--- a/examples/simple-singleton/pom.xml
+++ b/examples/simple-singleton/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-singleton</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Simple Singleton</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -89,4 +89,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/simple-stateful-callbacks/pom.xml b/examples/simple-stateful-callbacks/pom.xml
index c815a54..f0ff525 100644
--- a/examples/simple-stateful-callbacks/pom.xml
+++ b/examples/simple-stateful-callbacks/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-stateful-callbacks</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Simple Stateful Pojo Callbacks</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/simple-stateful/pom.xml b/examples/simple-stateful/pom.xml
index 0948b5d..c6eea6f 100644
--- a/examples/simple-stateful/pom.xml
+++ b/examples/simple-stateful/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-stateful</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Simple Stateful Pojo</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -89,4 +89,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/simple-stateless-callbacks/pom.xml b/examples/simple-stateless-callbacks/pom.xml
index 917dc9d..b46dcba 100644
--- a/examples/simple-stateless-callbacks/pom.xml
+++ b/examples/simple-stateless-callbacks/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-stateless-callbacks</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Simple Stateless Pojo Callbacks</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -71,7 +71,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/simple-stateless-with-descriptor/pom.xml b/examples/simple-stateless-with-descriptor/pom.xml
index a1efe05..e3da1f7 100644
--- a/examples/simple-stateless-with-descriptor/pom.xml
+++ b/examples/simple-stateless-with-descriptor/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-stateless-with-descriptor</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Simple Stateless With Deployment Descriptor</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -71,13 +71,13 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-jee-accessors</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/simple-stateless/pom.xml b/examples/simple-stateless/pom.xml
index 7c2e042..405248a 100644
--- a/examples/simple-stateless/pom.xml
+++ b/examples/simple-stateless/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-stateless</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Simple Stateless Pojo</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -71,7 +71,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/simple-webservice-without-interface/pom.xml b/examples/simple-webservice-without-interface/pom.xml
index 046c251..e58fad3 100644
--- a/examples/simple-webservice-without-interface/pom.xml
+++ b/examples/simple-webservice-without-interface/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-webservice-without-interface</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Simple Webservice Without Interface</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -69,7 +69,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-cxf</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <!-- This is required on IBM JDKs (and potentially others) because saaj-impl depends
@@ -106,4 +106,4 @@
     </snapshotRepository>
   </distributionManagement>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/simple-webservice/README.md b/examples/simple-webservice/README.md
index dc61607..f3ddd54 100644
--- a/examples/simple-webservice/README.md
+++ b/examples/simple-webservice/README.md
@@ -318,7 +318,7 @@
 
 If we look at the jar built by maven, we'll see the application itself is quite small:
 
-    $ jar tvf target/simple-webservice-1.1-SNAPSHOT.jar
+    $ jar tvf target/simple-webservice-1.1.0-SNAPSHOT.jar
          0 Sat Feb 18 19:17:06 PST 2012 META-INF/
        127 Sat Feb 18 19:17:04 PST 2012 META-INF/MANIFEST.MF
          0 Sat Feb 18 19:17:02 PST 2012 org/
diff --git a/examples/simple-webservice/pom.xml b/examples/simple-webservice/pom.xml
index db5f191..3bc0843 100644
--- a/examples/simple-webservice/pom.xml
+++ b/examples/simple-webservice/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-webservice</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Simple Webservice</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -69,7 +69,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-cxf</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <!-- This is required on IBM JDKs (and potentially others) because saaj-impl depends
@@ -99,4 +99,4 @@
     </snapshotRepository>
   </distributionManagement>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/spring-data-proxy-meta/pom.xml b/examples/spring-data-proxy-meta/pom.xml
index 931481e..6e512f6 100644
--- a/examples/spring-data-proxy-meta/pom.xml
+++ b/examples/spring-data-proxy-meta/pom.xml
@@ -21,7 +21,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>spring-data-proxy-meta</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Spring Data Meta</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -69,7 +69,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
     </dependency>
   </dependencies>
 
diff --git a/examples/spring-data-proxy/pom.xml b/examples/spring-data-proxy/pom.xml
index ef4ed5e..2b9e4a2 100644
--- a/examples/spring-data-proxy/pom.xml
+++ b/examples/spring-data-proxy/pom.xml
@@ -21,7 +21,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>spring-data-proxy</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Spring Data</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -69,7 +69,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
     </dependency>
   </dependencies>
 
diff --git a/examples/struts/pom.xml b/examples/struts/pom.xml
index d1478f8..c64eb15 100644
--- a/examples/struts/pom.xml
+++ b/examples/struts/pom.xml
@@ -19,7 +19,7 @@
   <groupId>org.superbiz.struts</groupId>
   <artifactId>struts</artifactId>
   <packaging>war</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Web Examples :: Struts</name>
   <url>http://openejb.apache.org</url>
   <properties>
diff --git a/examples/telephone-stateful/pom.xml b/examples/telephone-stateful/pom.xml
index e2244a5..78f4065 100644
--- a/examples/telephone-stateful/pom.xml
+++ b/examples/telephone-stateful/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>telephone-stateful</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Telephone Stateful Pojo</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -83,7 +83,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-ejbd</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <!-- END SNIPPET: openejbdep -->
diff --git a/examples/testcase-injection/pom.xml b/examples/testcase-injection/pom.xml
index 7140a1f..79545f3 100644
--- a/examples/testcase-injection/pom.xml
+++ b/examples/testcase-injection/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>testcase-injection</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: TestCase Injection</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -71,7 +71,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
 
diff --git a/examples/testing-security-2/pom.xml b/examples/testing-security-2/pom.xml
index 4d7dd13..044b993 100644
--- a/examples/testing-security-2/pom.xml
+++ b/examples/testing-security-2/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>testing-security-2</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Testing Security</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -79,7 +79,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
 
diff --git a/examples/testing-security-3/pom.xml b/examples/testing-security-3/pom.xml
index 8e766ef..c36e79f 100644
--- a/examples/testing-security-3/pom.xml
+++ b/examples/testing-security-3/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>testing-security-3</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Testing Security Service Provider</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -79,7 +79,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>provided</scope>
     </dependency>
 
diff --git a/examples/testing-security-4/pom.xml b/examples/testing-security-4/pom.xml
index d3f1e3b..3158d80 100644
--- a/examples/testing-security-4/pom.xml
+++ b/examples/testing-security-4/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>testing-security-4</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Testing Security Script Service Provider</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -79,7 +79,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>provided</scope>
     </dependency>
 
diff --git a/examples/testing-security-meta/pom.xml b/examples/testing-security-meta/pom.xml
index d409f8c..1b614ad 100644
--- a/examples/testing-security-meta/pom.xml
+++ b/examples/testing-security-meta/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>testing-security-meta</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Testing Security (Meta)</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -78,7 +78,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -97,4 +97,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/testing-security/pom.xml b/examples/testing-security/pom.xml
index 12b26a6..9337631 100644
--- a/examples/testing-security/pom.xml
+++ b/examples/testing-security/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>testing-security</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Testing Security</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -78,7 +78,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -97,4 +97,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/testing-transactions-bmt/pom.xml b/examples/testing-transactions-bmt/pom.xml
index 03142fd..ac8bb74 100644
--- a/examples/testing-transactions-bmt/pom.xml
+++ b/examples/testing-transactions-bmt/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>testing-transactions-bmt</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Testing Transactions BMT</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -71,7 +71,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
 
diff --git a/examples/testing-transactions/pom.xml b/examples/testing-transactions/pom.xml
index e753957..19a91d2 100644
--- a/examples/testing-transactions/pom.xml
+++ b/examples/testing-transactions/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>testing-transactions</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Testing Transactions</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -71,7 +71,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
 
diff --git a/examples/tomee-jersey-eclipselink/pom.xml b/examples/tomee-jersey-eclipselink/pom.xml
index 13e3963..392e46b 100644
--- a/examples/tomee-jersey-eclipselink/pom.xml
+++ b/examples/tomee-jersey-eclipselink/pom.xml
@@ -23,7 +23,7 @@
 
   <groupId>org.superbiz</groupId>
   <artifactId>tomee-jersey-eclipselink</artifactId>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <packaging>war</packaging>
   <name>OpenEJB :: Examples :: TomEE, Jersey, Eclipselink</name>
 
@@ -87,7 +87,7 @@
       <plugin>
         <groupId>org.apache.openejb.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>1.0.1-SNAPSHOT</version>
+        <version>1.1.0</version>
         <configuration>
           <systemVariables>
             <com.sun.jersey.server.impl.cdi.lookupExtensionInBeanManager>true</com.sun.jersey.server.impl.cdi.lookupExtensionInBeanManager>
diff --git a/examples/transaction-rollback/pom.xml b/examples/transaction-rollback/pom.xml
index af34b55..bd0f148 100644
--- a/examples/transaction-rollback/pom.xml
+++ b/examples/transaction-rollback/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>transaction-rollback</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Transaction Rollback</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -68,7 +68,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
 
@@ -90,4 +90,4 @@
     </snapshotRepository>
   </distributionManagement>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/troubleshooting/pom.xml b/examples/troubleshooting/pom.xml
index c9b0827..81472f6 100644
--- a/examples/troubleshooting/pom.xml
+++ b/examples/troubleshooting/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>troubleshooting</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Troubleshooting</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -67,7 +67,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -86,4 +86,4 @@
       <url>file://${basedir}/target/snapshot-repo/</url>
     </snapshotRepository>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/webservice-attachments/pom.xml b/examples/webservice-attachments/pom.xml
index 4ff595e..acece4c 100644
--- a/examples/webservice-attachments/pom.xml
+++ b/examples/webservice-attachments/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>webservice-attachments</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Webservice Attachments</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -69,7 +69,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-cxf</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <!-- This is required on IBM JDKs (and potentially others) because saaj-impl depends
@@ -98,4 +98,4 @@
     </snapshotRepository>
   </distributionManagement>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/webservice-handlerchain/pom.xml b/examples/webservice-handlerchain/pom.xml
index f0b690c..0236e41 100644
--- a/examples/webservice-handlerchain/pom.xml
+++ b/examples/webservice-handlerchain/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>webservice-handlerchain</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Web Service Handlers</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -69,7 +69,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-cxf</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <!-- This is required on IBM JDKs (and potentially others) because saaj-impl depends
diff --git a/examples/webservice-holder/pom.xml b/examples/webservice-holder/pom.xml
index 009b4ff..cba1b84 100644
--- a/examples/webservice-holder/pom.xml
+++ b/examples/webservice-holder/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>webservice-holder</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: @WebService Holder</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -69,7 +69,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-cxf</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <!-- This is required on IBM JDKs (and potentially others) because saaj-impl depends
diff --git a/examples/webservice-inheritance/pom.xml b/examples/webservice-inheritance/pom.xml
index 139d91e..0ffee47 100644
--- a/examples/webservice-inheritance/pom.xml
+++ b/examples/webservice-inheritance/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>webservice-inheritance</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Examples :: Webservice Inheritance</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -69,7 +69,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-cxf</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <!-- This is required on IBM JDKs (and potentially others) because saaj-impl depends
@@ -98,4 +98,4 @@
     </snapshotRepository>
   </distributionManagement>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/webservice-security/pom.xml b/examples/webservice-security/pom.xml
index fbfb302..f6e39b6 100644
--- a/examples/webservice-security/pom.xml
+++ b/examples/webservice-security/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>webservice-security</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Web Examples :: EJB WebService with Security</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -69,7 +69,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-cxf</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <!-- This is required on IBM JDKs (and potentially others) because saaj-impl depends
@@ -98,4 +98,4 @@
     </snapshotRepository>
   </distributionManagement>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/examples/webservice-ws-security/pom.xml b/examples/webservice-ws-security/pom.xml
index 43085c4..63fe715 100644
--- a/examples/webservice-ws-security/pom.xml
+++ b/examples/webservice-ws-security/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>webservice-ws-security</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Web Examples :: EJB WebService with WS-Security</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -56,7 +56,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-cxf</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>test</scope>
     </dependency>
     <!-- This is required on IBM JDKs (and potentially others) because saaj-impl depends
diff --git a/examples/webservice-ws-with-resources-config/pom.xml b/examples/webservice-ws-with-resources-config/pom.xml
index 41f1268..ffbf7d2 100644
--- a/examples/webservice-ws-with-resources-config/pom.xml
+++ b/examples/webservice-ws-with-resources-config/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>webservice-ws-with-resources-config</artifactId>
   <packaging>jar</packaging>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.1.0</version>
   <name>OpenEJB :: Web Examples :: EJB WebService WS Security with resources.xml</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -38,7 +38,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-cxf</artifactId>
-      <version>4.5.1-SNAPSHOT</version>
+      <version>4.5.1</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git a/itests/failover-ejb/pom.xml b/itests/failover-ejb/pom.xml
index 8b4b65f..7cc67c5 100644
--- a/itests/failover-ejb/pom.xml
+++ b/itests/failover-ejb/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>itests</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.openejb.itests</groupId>
diff --git a/itests/failover/pom.xml b/itests/failover/pom.xml
index 114f205..2cfbaf9 100644
--- a/itests/failover/pom.xml
+++ b/itests/failover/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>itests</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.openejb.itests</groupId>
@@ -65,7 +65,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>arquillian-tomee-common</artifactId>
-      <version>1.5.1-SNAPSHOT</version>
+      <version>1.5.1</version>
     </dependency>
     <dependency>
       <groupId>org.apache.openejb</groupId>
diff --git a/itests/openejb-itests-app/pom.xml b/itests/openejb-itests-app/pom.xml
index a20bd71..06ac7b4 100644
--- a/itests/openejb-itests-app/pom.xml
+++ b/itests/openejb-itests-app/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>itests</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-itests-app</artifactId>
diff --git a/itests/openejb-itests-beans/pom.xml b/itests/openejb-itests-beans/pom.xml
index 37b7f93..f1d754b 100644
--- a/itests/openejb-itests-beans/pom.xml
+++ b/itests/openejb-itests-beans/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>itests</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-itests-beans</artifactId>
diff --git a/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/AnnotatedFieldInjectionMdbBean.java b/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/AnnotatedFieldInjectionMdbBean.java
index a87f297..5af1dcd 100644
--- a/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/AnnotatedFieldInjectionMdbBean.java
+++ b/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/AnnotatedFieldInjectionMdbBean.java
@@ -17,44 +17,43 @@
  */
 package org.apache.openejb.test.mdb;
 
-import org.apache.openejb.test.entity.bmp.BasicBmpHome;
-import org.apache.openejb.test.stateful.BasicStatefulHome;
-import org.apache.openejb.test.stateful.BasicStatefulBusinessLocal;
-import org.apache.openejb.test.stateful.BasicStatefulBusinessRemote;
-import org.apache.openejb.test.stateless.BasicStatelessHome;
-import org.apache.openejb.test.stateless.BasicStatelessBusinessLocal;
-import org.apache.openejb.test.stateless.BasicStatelessBusinessRemote;
-import org.apache.openejb.test.TestFailureException;
-
-import javax.annotation.PreDestroy;
-import javax.ejb.EJB;
-import javax.ejb.MessageDriven;
-import javax.ejb.MessageDrivenContext;
-import javax.ejb.EJBException;
-import javax.ejb.ActivationConfigProperty;
-import javax.annotation.Resource;
-import javax.annotation.PostConstruct;
-import javax.sql.DataSource;
-import javax.jms.ConnectionFactory;
-import javax.jms.QueueConnectionFactory;
-import javax.jms.TopicConnectionFactory;
-import javax.jms.JMSException;
-import javax.jms.Session;
-import javax.jms.Topic;
-import javax.jms.MessageProducer;
-import javax.jms.MessageListener;
-import javax.jms.Message;
-import javax.persistence.PersistenceUnit;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.PersistenceContext;
-import javax.persistence.EntityManager;
-
 import junit.framework.Assert;
 import junit.framework.AssertionFailedError;
+import org.apache.openejb.test.TestFailureException;
+import org.apache.openejb.test.entity.bmp.BasicBmpHome;
+import org.apache.openejb.test.stateful.BasicStatefulBusinessLocal;
+import org.apache.openejb.test.stateful.BasicStatefulBusinessRemote;
+import org.apache.openejb.test.stateful.BasicStatefulHome;
+import org.apache.openejb.test.stateless.BasicStatelessBusinessLocal;
+import org.apache.openejb.test.stateless.BasicStatelessBusinessRemote;
+import org.apache.openejb.test.stateless.BasicStatelessHome;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.annotation.Resource;
+import javax.ejb.ActivationConfigProperty;
+import javax.ejb.EJB;
+import javax.ejb.EJBException;
+import javax.ejb.MessageDriven;
+import javax.ejb.MessageDrivenContext;
+import javax.jms.ConnectionFactory;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.MessageProducer;
+import javax.jms.QueueConnectionFactory;
+import javax.jms.Session;
+import javax.jms.Topic;
+import javax.jms.TopicConnectionFactory;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceUnit;
+import javax.sql.DataSource;
 
 @MessageDriven(activationConfig = {
-        @ActivationConfigProperty(propertyName="destinationType", propertyValue = "javax.jms.Queue"),
-        @ActivationConfigProperty(propertyName="destination", propertyValue = "AnnotatedFieldInjectionMdb")})
+        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
+        @ActivationConfigProperty(propertyName = "destination", propertyValue = "AnnotatedFieldInjectionMdb")})
 public class AnnotatedFieldInjectionMdbBean implements MessageListener {
     @Resource
     private MessageDrivenContext mdbContext;
@@ -75,11 +74,11 @@
     @Resource
     private Integer inteeger = 1;
     @Resource
-    private Short shoort = (short)1;
+    private Short shoort = (short) 1;
     @Resource
     private Boolean booolean = true;
     @Resource
-    private Byte byyte = (byte)1;
+    private Byte byyte = (byte) 1;
     @Resource
     private Character chaaracter = 'D';
     @Resource
@@ -114,7 +113,19 @@
         }
     }
 
-    public void onMessage(Message message) {
+    @PreDestroy
+    public void preDestroy() {
+        if (null != mdbInvoker) {
+            try {
+                mdbInvoker.destroy();
+            } catch (Throwable e) {
+                //Ignore
+            }
+        }
+    }
+
+    @Override
+    public void onMessage(final Message message) {
         try {
 //            System.out.println("\n" +
 //                    "***************************************\n" +
@@ -189,7 +200,7 @@
 
     public void lookupStringEntry() throws TestFailureException {
         try {
-            String expected = new String("1");
+            final String expected = "1";
             Assert.assertNotNull("The String looked up is null", striing);
             Assert.assertEquals(expected, striing);
         } catch (AssertionFailedError afe) {
@@ -199,7 +210,7 @@
 
     public void lookupDoubleEntry() throws TestFailureException {
         try {
-            Double expected = new Double(1.0D);
+            final Double expected = 1.0D;
 
             Assert.assertNotNull("The Double looked up is null", doouble);
             Assert.assertEquals(expected, doouble);
@@ -211,7 +222,7 @@
 
     public void lookupLongEntry() throws TestFailureException {
         try {
-            Long expected = new Long(1L);
+            final Long expected = 1L;
 
             Assert.assertNotNull("The Long looked up is null", loong);
             Assert.assertEquals(expected, loong);
@@ -222,7 +233,7 @@
 
     public void lookupFloatEntry() throws TestFailureException {
         try {
-            Float expected = new Float(1.0F);
+            final Float expected = 1.0F;
 
             Assert.assertNotNull("The Float looked up is null", flooat);
             Assert.assertEquals(expected, flooat);
@@ -233,7 +244,7 @@
 
     public void lookupIntegerEntry() throws TestFailureException {
         try {
-            Integer expected = new Integer(1);
+            final Integer expected = 1;
 
             Assert.assertNotNull("The Integer looked up is null", inteeger);
             Assert.assertEquals(expected, inteeger);
@@ -245,7 +256,7 @@
 
     public void lookupShortEntry() throws TestFailureException {
         try {
-            Short expected = new Short((short) 1);
+            final Short expected = (short) 1;
 
             Assert.assertNotNull("The Short looked up is null", shoort);
             Assert.assertEquals(expected, shoort);
@@ -256,7 +267,7 @@
 
     public void lookupBooleanEntry() throws TestFailureException {
         try {
-            Boolean expected = new Boolean(true);
+            final Boolean expected = true;
 
             Assert.assertNotNull("The Boolean looked up is null", booolean);
             Assert.assertEquals(expected, booolean);
@@ -267,7 +278,7 @@
 
     public void lookupByteEntry() throws TestFailureException {
         try {
-            Byte expected = new Byte((byte) 1);
+            final Byte expected = (byte) 1;
 
             Assert.assertNotNull("The Byte looked up is null", byyte);
             Assert.assertEquals(expected, byyte);
@@ -278,7 +289,7 @@
 
     public void lookupCharacterEntry() throws TestFailureException {
         try {
-            Character expected = new Character('D');
+            final Character expected = 'D';
 
             Assert.assertNotNull("The Character looked up is null", chaaracter);
             Assert.assertEquals(expected, chaaracter);
@@ -295,25 +306,25 @@
         }
     }
 
-    public void lookupJMSConnectionFactory() throws TestFailureException{
-        try{
-            try{
+    public void lookupJMSConnectionFactory() throws TestFailureException {
+        try {
+            try {
                 testJmsConnection(coonnectionFactory.createConnection());
                 testJmsConnection(queueCoonnectionFactory.createConnection());
                 testJmsConnection(topicCoonnectionFactory.createConnection());
-            } catch (Exception e){
+            } catch (Exception e) {
                 e.printStackTrace();
-                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+                Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
             }
-        } catch (AssertionFailedError afe){
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
 
-    private void testJmsConnection(javax.jms.Connection connection) throws JMSException {
-        Session session = connection.createSession(false, Session.DUPS_OK_ACKNOWLEDGE);
-        Topic topic = session.createTopic("test");
-        MessageProducer producer = session.createProducer(topic);
+    private void testJmsConnection(final javax.jms.Connection connection) throws JMSException {
+        final Session session = connection.createSession(false, Session.DUPS_OK_ACKNOWLEDGE);
+        final Topic topic = session.createTopic("test");
+        final MessageProducer producer = session.createProducer(topic);
         producer.send(session.createMessage());
         producer.close();
         session.close();
diff --git a/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/BasicMdbBean.java b/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/BasicMdbBean.java
index 64b4d5f..6dc50f3 100644
--- a/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/BasicMdbBean.java
+++ b/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/BasicMdbBean.java
@@ -19,7 +19,6 @@
 import org.apache.openejb.test.ApplicationException;
 import org.apache.openejb.test.object.OperationsPolicy;
 
-import javax.annotation.PreDestroy;
 import javax.ejb.EJBException;
 import javax.ejb.MessageDrivenBean;
 import javax.ejb.MessageDrivenContext;
@@ -28,26 +27,28 @@
 import javax.jms.Message;
 import javax.jms.MessageListener;
 import javax.naming.InitialContext;
-import java.util.Hashtable;
+import java.util.HashMap;
 import java.util.Properties;
 
 public class BasicMdbBean implements BasicMdbObject, MessageDrivenBean, MessageListener {
-	private MessageDrivenContext mdbContext = null;
-    private static Hashtable allowedOperationsTable = new Hashtable();
+    private MessageDrivenContext mdbContext = null;
+    private static final HashMap<String, OperationsPolicy> allowedOperationsTable = new HashMap<String, OperationsPolicy>();
     protected MdbInvoker mdbInvoker;
 
-    public void setMessageDrivenContext(MessageDrivenContext ctx) throws EJBException {
+    @Override
+    public void setMessageDrivenContext(final MessageDrivenContext ctx) throws EJBException {
         this.mdbContext = ctx;
         testAllowedOperations("setMessageDrivenContext");
         try {
-            ConnectionFactory connectionFactory = (ConnectionFactory) new InitialContext().lookup("java:comp/env/jms");
+            final ConnectionFactory connectionFactory = (ConnectionFactory) new InitialContext().lookup("java:comp/env/jms");
             mdbInvoker = new MdbInvoker(connectionFactory, this);
         } catch (Exception e) {
             throw new EJBException(e);
         }
     }
 
-    public void onMessage(Message message) {
+    @Override
+    public void onMessage(final Message message) {
         try {
 //            System.out.println("\n" +
 //                    "***************************************\n" +
@@ -60,7 +61,7 @@
             }
             mdbInvoker.onMessage(message);
         } catch (Throwable e) {
-            e.printStackTrace();  
+            e.printStackTrace();
         }
     }
 
@@ -79,18 +80,19 @@
     /**
      * Maps to BasicStatelessObject.businessMethod
      */
-    public String businessMethod(String text){
+    @Override
+    public String businessMethod(final String text) {
         testAllowedOperations("businessMethod");
-        StringBuffer b = new StringBuffer(text);
+        final StringBuffer b = new StringBuffer(text);
         return b.reverse().toString();
     }
 
 
     /**
      * Throws an ApplicationException when invoked
-     *
      */
-    public void throwApplicationException() throws ApplicationException{
+    @Override
+    public void throwApplicationException() throws ApplicationException {
         throw new ApplicationException("Testing ability to throw Application Exceptions");
     }
 
@@ -99,35 +101,37 @@
      * This is a system exception and should result in the
      * destruction of the instance and invalidation of the
      * remote reference.
-     *
      */
+    @Override
     public void throwSystemException_NullPointer() {
         throw new NullPointerException("Testing ability to throw System Exceptions");
     }
 
     /**
      * Maps to BasicStatelessObject.getPermissionsReport
-     *
+     * <p/>
      * Returns a report of the bean's
      * runtime permissions
      *
      * @return
      */
-    public Properties getPermissionsReport(){
+    @Override
+    public Properties getPermissionsReport() {
         /* TO DO: */
         return null;
     }
 
     /**
      * Maps to BasicStatelessObject.getAllowedOperationsReport
-     *
+     * <p/>
      * Returns a report of the allowed opperations
      * for one of the bean's methods.
      *
      * @param methodName The method for which to get the allowed opperations report
      * @return
      */
-    public OperationsPolicy getAllowedOperationsReport(String methodName){
+    @Override
+    public OperationsPolicy getAllowedOperationsReport(final String methodName) {
         return (OperationsPolicy) allowedOperationsTable.get(methodName);
     }
 
@@ -140,11 +144,17 @@
     // MessageDrivenBean interface methods
     //
 
-    public void ejbCreate() throws javax.ejb.CreateException{
+    public void ejbCreate() throws javax.ejb.CreateException {
         testAllowedOperations("ejbCreate");
     }
 
+    @Override
     public void ejbRemove() throws EJBException {
+
+        if (null != mdbInvoker) {
+            mdbInvoker.destroy();
+        }
+
         testAllowedOperations("ejbRemove");
     }
 
@@ -152,67 +162,67 @@
     // SessionBean interface methods
     //================================
 
-	protected void testAllowedOperations(String methodName) {
-		OperationsPolicy policy = new OperationsPolicy();
+    protected void testAllowedOperations(final String methodName) {
+        final OperationsPolicy policy = new OperationsPolicy();
 
-		/*[0] Test getEJBHome /////////////////*/
-		try {
-			mdbContext.getEJBHome();
-			policy.allow(OperationsPolicy.Context_getEJBHome);
-		} catch (IllegalStateException ignored) {
-		}
+        /*[0] Test getEJBHome /////////////////*/
+        try {
+            mdbContext.getEJBHome();
+            policy.allow(OperationsPolicy.Context_getEJBHome);
+        } catch (IllegalStateException ignored) {
+        }
 
-		/*[1] Test getCallerPrincipal /////////*/
-		try {
-			mdbContext.getCallerPrincipal();
-			policy.allow(OperationsPolicy.Context_getCallerPrincipal);
-		} catch (IllegalStateException ignored) {
-		}
+        /*[1] Test getCallerPrincipal /////////*/
+        try {
+            mdbContext.getCallerPrincipal();
+            policy.allow(OperationsPolicy.Context_getCallerPrincipal);
+        } catch (IllegalStateException ignored) {
+        }
 
-		/*[2] Test isCallerInRole /////////////*/
-		try {
-			mdbContext.isCallerInRole("TheMan");
-			policy.allow(OperationsPolicy.Context_isCallerInRole);
-		} catch (IllegalStateException ignored) {
-		}
+        /*[2] Test isCallerInRole /////////////*/
+        try {
+            mdbContext.isCallerInRole("TheMan");
+            policy.allow(OperationsPolicy.Context_isCallerInRole);
+        } catch (IllegalStateException ignored) {
+        }
 
-		/*[3] Test getRollbackOnly ////////////*/
-		try {
-			mdbContext.getRollbackOnly();
-			policy.allow(OperationsPolicy.Context_getRollbackOnly);
-		} catch (IllegalStateException ignored) {
-		}
+        /*[3] Test getRollbackOnly ////////////*/
+        try {
+            mdbContext.getRollbackOnly();
+            policy.allow(OperationsPolicy.Context_getRollbackOnly);
+        } catch (IllegalStateException ignored) {
+        }
 
-		/*[4] Test setRollbackOnly ////////////*/
+        /*[4] Test setRollbackOnly ////////////*/
         // Rollback causes message redelivery
 
-		/*[5] Test getUserTransaction /////////*/
-		try {
-			mdbContext.getUserTransaction();
-			policy.allow(OperationsPolicy.Context_getUserTransaction);
-		} catch (IllegalStateException ignored) {
-		}
+        /*[5] Test getUserTransaction /////////*/
+        try {
+            mdbContext.getUserTransaction();
+            policy.allow(OperationsPolicy.Context_getUserTransaction);
+        } catch (IllegalStateException ignored) {
+        }
 
-		/*[6] Test getEJBObject ///////////////
-		 *
-		 * MDBs don't have an ejbObject
-		 */
+        /*[6] Test getEJBObject ///////////////
+           *
+           * MDBs don't have an ejbObject
+           */
 
-		/*[7] Test Context_getPrimaryKey ///////////////
-		 *
-		 * Can't really do this
-		 */
+        /*[7] Test Context_getPrimaryKey ///////////////
+           *
+           * Can't really do this
+           */
 
-		/*[8] Test JNDI_access_to_java_comp_env ///////////////*/
-		try {
-			InitialContext jndiContext = new InitialContext();
+        /*[8] Test JNDI_access_to_java_comp_env ///////////////*/
+        try {
+            final InitialContext jndiContext = new InitialContext();
 
-			String actual = (String)jndiContext.lookup("java:comp/env/stateless/references/JNDI_access_to_java_comp_env");
+            final String actual = (String) jndiContext.lookup("java:comp/env/stateless/references/JNDI_access_to_java_comp_env");
 
-			policy.allow(OperationsPolicy.JNDI_access_to_java_comp_env);
-		} catch (IllegalStateException ignored) {
-		} catch (javax.naming.NamingException ignored) {
-		}
+            policy.allow(OperationsPolicy.JNDI_access_to_java_comp_env);
+        } catch (IllegalStateException ignored) {
+        } catch (javax.naming.NamingException ignored) {
+        }
 
         /*[11] Test lookup /////////*/
         try {
@@ -221,7 +231,7 @@
         } catch (IllegalArgumentException ignored) {
         }
 
-		allowedOperationsTable.put(methodName, policy);
+        allowedOperationsTable.put(methodName, policy);
 
     }
 
diff --git a/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/ContextLookupMdbBean.java b/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/ContextLookupMdbBean.java
index f47c634..481a994 100644
--- a/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/ContextLookupMdbBean.java
+++ b/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/ContextLookupMdbBean.java
@@ -17,56 +17,56 @@
  */
 package org.apache.openejb.test.mdb;
 
+import junit.framework.Assert;
+import junit.framework.AssertionFailedError;
 import org.apache.openejb.test.TestFailureException;
-import org.apache.openejb.test.stateless.BasicStatelessHome;
-import org.apache.openejb.test.stateless.BasicStatelessObject;
-import org.apache.openejb.test.stateless.BasicStatelessBusinessLocal;
-import org.apache.openejb.test.stateless.BasicStatelessBusinessRemote;
-import org.apache.openejb.test.stateful.BasicStatefulHome;
-import org.apache.openejb.test.stateful.BasicStatefulObject;
-import org.apache.openejb.test.stateful.BasicStatefulBusinessLocal;
-import org.apache.openejb.test.stateful.BasicStatefulBusinessRemote;
 import org.apache.openejb.test.entity.bmp.BasicBmpHome;
 import org.apache.openejb.test.entity.bmp.BasicBmpObject;
+import org.apache.openejb.test.stateful.BasicStatefulBusinessLocal;
+import org.apache.openejb.test.stateful.BasicStatefulBusinessRemote;
+import org.apache.openejb.test.stateful.BasicStatefulHome;
+import org.apache.openejb.test.stateful.BasicStatefulObject;
+import org.apache.openejb.test.stateless.BasicStatelessBusinessLocal;
+import org.apache.openejb.test.stateless.BasicStatelessBusinessRemote;
+import org.apache.openejb.test.stateless.BasicStatelessHome;
+import org.apache.openejb.test.stateless.BasicStatelessObject;
 
-import javax.annotation.PreDestroy;
 import javax.ejb.EJBContext;
 import javax.ejb.EJBException;
 import javax.ejb.MessageDrivenBean;
 import javax.ejb.MessageDrivenContext;
-import javax.sql.DataSource;
-import javax.jms.ConnectionFactory;
-import javax.jms.TopicConnectionFactory;
-import javax.jms.QueueConnectionFactory;
 import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
 import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.MessageProducer;
+import javax.jms.QueueConnectionFactory;
 import javax.jms.Session;
 import javax.jms.Topic;
-import javax.jms.MessageProducer;
-import javax.jms.MessageListener;
-import javax.jms.Message;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.EntityManager;
+import javax.jms.TopicConnectionFactory;
 import javax.naming.InitialContext;
-
-import junit.framework.Assert;
-import junit.framework.AssertionFailedError;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.sql.DataSource;
 
 public class ContextLookupMdbBean implements EncMdbObject, MessageDrivenBean, MessageListener {
-	private MessageDrivenContext mdbContext = null;
+    private MessageDrivenContext mdbContext = null;
     private MdbInvoker mdbInvoker;
 
-    public void setMessageDrivenContext(MessageDrivenContext ctx) throws EJBException {
+    @Override
+    public void setMessageDrivenContext(final MessageDrivenContext ctx) throws EJBException {
         this.mdbContext = ctx;
         try {
-            ConnectionFactory connectionFactory = (ConnectionFactory) new InitialContext().lookup("java:comp/env/jms");
+            final ConnectionFactory connectionFactory = (ConnectionFactory) new InitialContext().lookup("java:comp/env/jms");
             mdbInvoker = new MdbInvoker(connectionFactory, this);
         } catch (Exception e) {
             throw new EJBException(e);
         }
     }
 
-    public void onMessage(Message message) {
+    @Override
+    public void onMessage(final Message message) {
         try {
 //            System.out.println("\n" +
 //                    "***************************************\n" +
@@ -83,13 +83,14 @@
         }
     }
 
+    @Override
     public void lookupEntityBean() throws TestFailureException {
         try {
             try {
-                BasicBmpHome home = (BasicBmpHome) mdbContext.lookup("stateless/beanReferences/bmp_entity");
+                final BasicBmpHome home = (BasicBmpHome) mdbContext.lookup("stateless/beanReferences/bmp_entity");
                 Assert.assertNotNull("The EJBHome looked up is null", home);
 
-                BasicBmpObject object = home.createObject("Enc Bean");
+                final BasicBmpObject object = home.createObject("Enc Bean");
                 Assert.assertNotNull("The EJBObject is null", object);
             } catch (Exception e) {
                 Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
@@ -99,13 +100,14 @@
         }
     }
 
+    @Override
     public void lookupStatefulBean() throws TestFailureException {
         try {
             try {
-                BasicStatefulHome home = (BasicStatefulHome) mdbContext.lookup("stateless/beanReferences/stateful");
+                final BasicStatefulHome home = (BasicStatefulHome) mdbContext.lookup("stateless/beanReferences/stateful");
                 Assert.assertNotNull("The EJBHome looked up is null", home);
 
-                BasicStatefulObject object = home.createObject("Enc Bean");
+                final BasicStatefulObject object = home.createObject("Enc Bean");
                 Assert.assertNotNull("The EJBObject is null", object);
             } catch (Exception e) {
                 Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
@@ -115,13 +117,14 @@
         }
     }
 
+    @Override
     public void lookupStatelessBean() throws TestFailureException {
         try {
             try {
-                BasicStatelessHome home = (BasicStatelessHome) mdbContext.lookup("stateless/beanReferences/stateless");
+                final BasicStatelessHome home = (BasicStatelessHome) mdbContext.lookup("stateless/beanReferences/stateless");
                 Assert.assertNotNull("The EJBHome looked up is null", home);
 
-                BasicStatelessObject object = home.createObject();
+                final BasicStatelessObject object = home.createObject();
                 Assert.assertNotNull("The EJBObject is null", object);
             } catch (Exception e) {
                 Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
@@ -131,63 +134,68 @@
         }
     }
 
-    public void lookupStatelessBusinessLocal() throws TestFailureException{
-        try{
-            try{
-            BasicStatelessBusinessLocal object = (BasicStatelessBusinessLocal) mdbContext.lookup("stateless/beanReferences/stateless-business-local");
-            Assert.assertNotNull("The EJB BusinessLocal is null", object );
-            } catch (Exception e){
-                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+    @Override
+    public void lookupStatelessBusinessLocal() throws TestFailureException {
+        try {
+            try {
+                final BasicStatelessBusinessLocal object = (BasicStatelessBusinessLocal) mdbContext.lookup("stateless/beanReferences/stateless-business-local");
+                Assert.assertNotNull("The EJB BusinessLocal is null", object);
+            } catch (Exception e) {
+                Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
             }
-        } catch (AssertionFailedError afe){
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
 
-    public void lookupStatelessBusinessRemote() throws TestFailureException{
-        try{
-            try{
-            BasicStatelessBusinessRemote object = (BasicStatelessBusinessRemote) mdbContext.lookup("stateless/beanReferences/stateless-business-remote");
-            Assert.assertNotNull("The EJB BusinessRemote is null", object );
-            } catch (Exception e){
-                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+    @Override
+    public void lookupStatelessBusinessRemote() throws TestFailureException {
+        try {
+            try {
+                final BasicStatelessBusinessRemote object = (BasicStatelessBusinessRemote) mdbContext.lookup("stateless/beanReferences/stateless-business-remote");
+                Assert.assertNotNull("The EJB BusinessRemote is null", object);
+            } catch (Exception e) {
+                Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
             }
-        } catch (AssertionFailedError afe){
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
 
-    public void lookupStatefulBusinessLocal() throws TestFailureException{
-        try{
-            try{
-            BasicStatefulBusinessLocal object = (BasicStatefulBusinessLocal) mdbContext.lookup("stateless/beanReferences/stateful-business-local");
-            Assert.assertNotNull("The EJB BusinessLocal is null", object );
-            } catch (Exception e){
-                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+    @Override
+    public void lookupStatefulBusinessLocal() throws TestFailureException {
+        try {
+            try {
+                final BasicStatefulBusinessLocal object = (BasicStatefulBusinessLocal) mdbContext.lookup("stateless/beanReferences/stateful-business-local");
+                Assert.assertNotNull("The EJB BusinessLocal is null", object);
+            } catch (Exception e) {
+                Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
             }
-        } catch (AssertionFailedError afe){
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
 
-    public void lookupStatefulBusinessRemote() throws TestFailureException{
-        try{
-            try{
-            BasicStatefulBusinessRemote object = (BasicStatefulBusinessRemote) mdbContext.lookup("stateless/beanReferences/stateful-business-remote");
-            Assert.assertNotNull("The EJB BusinessRemote is null", object );
-            } catch (Exception e){
-                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+    @Override
+    public void lookupStatefulBusinessRemote() throws TestFailureException {
+        try {
+            try {
+                final BasicStatefulBusinessRemote object = (BasicStatefulBusinessRemote) mdbContext.lookup("stateless/beanReferences/stateful-business-remote");
+                Assert.assertNotNull("The EJB BusinessRemote is null", object);
+            } catch (Exception e) {
+                Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
             }
-        } catch (AssertionFailedError afe){
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
 
+    @Override
     public void lookupStringEntry() throws TestFailureException {
         try {
             try {
-                String expected = new String("1");
-                String actual = (String) mdbContext.lookup("stateless/references/String");
+                final String expected = "1";
+                final String actual = (String) mdbContext.lookup("stateless/references/String");
 
                 Assert.assertNotNull("The String looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -200,11 +208,12 @@
         }
     }
 
+    @Override
     public void lookupDoubleEntry() throws TestFailureException {
         try {
             try {
-                Double expected = new Double(1.0D);
-                Double actual = (Double) mdbContext.lookup("stateless/references/Double");
+                final Double expected = 1.0D;
+                final Double actual = (Double) mdbContext.lookup("stateless/references/Double");
 
                 Assert.assertNotNull("The Double looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -217,11 +226,12 @@
         }
     }
 
+    @Override
     public void lookupLongEntry() throws TestFailureException {
         try {
             try {
-                Long expected = new Long(1L);
-                Long actual = (Long) mdbContext.lookup("stateless/references/Long");
+                final Long expected = 1L;
+                final Long actual = (Long) mdbContext.lookup("stateless/references/Long");
 
                 Assert.assertNotNull("The Long looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -234,11 +244,12 @@
         }
     }
 
+    @Override
     public void lookupFloatEntry() throws TestFailureException {
         try {
             try {
-                Float expected = new Float(1.0F);
-                Float actual = (Float) mdbContext.lookup("stateless/references/Float");
+                final Float expected = 1.0F;
+                final Float actual = (Float) mdbContext.lookup("stateless/references/Float");
 
                 Assert.assertNotNull("The Float looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -251,11 +262,12 @@
         }
     }
 
+    @Override
     public void lookupIntegerEntry() throws TestFailureException {
         try {
             try {
-                Integer expected = new Integer(1);
-                Integer actual = (Integer) mdbContext.lookup("stateless/references/Integer");
+                final Integer expected = 1;
+                final Integer actual = (Integer) mdbContext.lookup("stateless/references/Integer");
 
                 Assert.assertNotNull("The Integer looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -268,11 +280,12 @@
         }
     }
 
+    @Override
     public void lookupShortEntry() throws TestFailureException {
         try {
             try {
-                Short expected = new Short((short) 1);
-                Short actual = (Short) mdbContext.lookup("stateless/references/Short");
+                final Short expected = (short) 1;
+                final Short actual = (Short) mdbContext.lookup("stateless/references/Short");
 
                 Assert.assertNotNull("The Short looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -285,11 +298,12 @@
         }
     }
 
+    @Override
     public void lookupBooleanEntry() throws TestFailureException {
         try {
             try {
-                Boolean expected = new Boolean(true);
-                Boolean actual = (Boolean) mdbContext.lookup("stateless/references/Boolean");
+                final Boolean expected = true;
+                final Boolean actual = (Boolean) mdbContext.lookup("stateless/references/Boolean");
 
                 Assert.assertNotNull("The Boolean looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -302,11 +316,12 @@
         }
     }
 
+    @Override
     public void lookupByteEntry() throws TestFailureException {
         try {
             try {
-                Byte expected = new Byte((byte) 1);
-                Byte actual = (Byte) mdbContext.lookup("stateless/references/Byte");
+                final Byte expected = (byte) 1;
+                final Byte actual = (Byte) mdbContext.lookup("stateless/references/Byte");
 
                 Assert.assertNotNull("The Byte looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -319,11 +334,12 @@
         }
     }
 
+    @Override
     public void lookupCharacterEntry() throws TestFailureException {
         try {
             try {
-                Character expected = new Character('D');
-                Character actual = (Character) mdbContext.lookup("stateless/references/Character");
+                final Character expected = 'D';
+                final Character actual = (Character) mdbContext.lookup("stateless/references/Character");
 
                 Assert.assertNotNull("The Character looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -336,10 +352,11 @@
         }
     }
 
+    @Override
     public void lookupResource() throws TestFailureException {
         try {
             try {
-                Object obj = mdbContext.lookup("datasource");
+                final Object obj = mdbContext.lookup("datasource");
                 Assert.assertNotNull("The DataSource is null", obj);
                 Assert.assertTrue("Not an instance of DataSource", obj instanceof DataSource);
             } catch (Exception e) {
@@ -350,95 +367,99 @@
         }
     }
 
-    public void lookupJMSConnectionFactory() throws TestFailureException{
-        try{
-            try{
+    @Override
+    public void lookupJMSConnectionFactory() throws TestFailureException {
+        try {
+            try {
                 Object obj = mdbContext.lookup("jms");
                 Assert.assertNotNull("The JMS ConnectionFactory is null", obj);
                 Assert.assertTrue("Not an instance of ConnectionFactory", obj instanceof ConnectionFactory);
-                ConnectionFactory connectionFactory = (ConnectionFactory) obj;
+                final ConnectionFactory connectionFactory = (ConnectionFactory) obj;
                 testJmsConnection(connectionFactory.createConnection());
 
                 obj = mdbContext.lookup("TopicCF");
                 Assert.assertNotNull("The JMS TopicConnectionFactory is null", obj);
                 Assert.assertTrue("Not an instance of TopicConnectionFactory", obj instanceof TopicConnectionFactory);
-                TopicConnectionFactory topicConnectionFactory = (TopicConnectionFactory) obj;
+                final TopicConnectionFactory topicConnectionFactory = (TopicConnectionFactory) obj;
                 testJmsConnection(topicConnectionFactory.createConnection());
 
                 obj = mdbContext.lookup("QueueCF");
                 Assert.assertNotNull("The JMS QueueConnectionFactory is null", obj);
                 Assert.assertTrue("Not an instance of QueueConnectionFactory", obj instanceof QueueConnectionFactory);
-                QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) obj;
+                final QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) obj;
                 testJmsConnection(queueConnectionFactory.createConnection());
-            } catch (Exception e){
+            } catch (Exception e) {
                 e.printStackTrace();
-                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+                Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
             }
-        } catch (AssertionFailedError afe){
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
 
-    private void testJmsConnection(Connection connection) throws JMSException {
-        Session session = connection.createSession(false, Session.DUPS_OK_ACKNOWLEDGE);
-        Topic topic = session.createTopic("test");
-        MessageProducer producer = session.createProducer(topic);
+    private void testJmsConnection(final Connection connection) throws JMSException {
+        final Session session = connection.createSession(false, Session.DUPS_OK_ACKNOWLEDGE);
+        final Topic topic = session.createTopic("test");
+        final MessageProducer producer = session.createProducer(topic);
         producer.send(session.createMessage());
         producer.close();
         session.close();
         connection.close();
     }
 
-    public void lookupPersistenceUnit() throws TestFailureException{
-        try{
-            try{
-                EntityManagerFactory emf = (EntityManagerFactory) mdbContext.lookup("persistence/TestUnit");
-                Assert.assertNotNull("The EntityManagerFactory is null", emf );
+    @Override
+    public void lookupPersistenceUnit() throws TestFailureException {
+        try {
+            try {
+                final EntityManagerFactory emf = (EntityManagerFactory) mdbContext.lookup("persistence/TestUnit");
+                Assert.assertNotNull("The EntityManagerFactory is null", emf);
 
-            } catch (Exception e){
-                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+            } catch (Exception e) {
+                Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
             }
-        } catch (AssertionFailedError afe){
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
 
-    public void lookupPersistenceContext() throws TestFailureException{
-        try{
-            try{
-                EntityManager em = (EntityManager) mdbContext.lookup("persistence/TestContext");
+    @Override
+    public void lookupPersistenceContext() throws TestFailureException {
+        try {
+            try {
+                final EntityManager em = (EntityManager) mdbContext.lookup("persistence/TestContext");
                 Assert.assertNotNull("The EntityManager is null", em);
 
                 // call a do nothing method to assure entity manager actually exists
                 em.getFlushMode();
-            } catch (Exception e){
-                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+            } catch (Exception e) {
+                Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
             }
-        } catch (AssertionFailedError afe){
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
 
-    public void lookupMessageDrivenContext() throws TestFailureException{
-        try{
-            try{
-                InitialContext ctx = new InitialContext();
+    @Override
+    public void lookupMessageDrivenContext() throws TestFailureException {
+        try {
+            try {
+                final InitialContext ctx = new InitialContext();
                 Assert.assertNotNull("The InitialContext is null", ctx);
 
                 // lookup in enc
-                MessageDrivenContext sctx = (MessageDrivenContext)ctx.lookup("java:comp/env/mdbcontext");
-                Assert.assertNotNull("The MessageDrivenContext got from java:comp/env/mdbcontext is null", sctx );
+                final MessageDrivenContext sctx = (MessageDrivenContext) ctx.lookup("java:comp/env/mdbcontext");
+                Assert.assertNotNull("The MessageDrivenContext got from java:comp/env/mdbcontext is null", sctx);
 
                 // lookup using global name
-                EJBContext ejbCtx = (EJBContext)ctx.lookup("java:comp/EJBContext");
-                Assert.assertNotNull("The MessageDrivenContext got from java:comp/EJBContext is null ", ejbCtx );
+                final EJBContext ejbCtx = (EJBContext) ctx.lookup("java:comp/EJBContext");
+                Assert.assertNotNull("The MessageDrivenContext got from java:comp/EJBContext is null ", ejbCtx);
 
                 // verify context was set via legacy set method
                 Assert.assertNotNull("The MessageDrivenContext is null from setter method", mdbContext);
-            } catch (Exception e){
-                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+            } catch (Exception e) {
+                Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
             }
-        } catch (AssertionFailedError afe){
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
 
@@ -447,6 +468,11 @@
     public void ejbCreate() throws javax.ejb.CreateException {
     }
 
+    @Override
     public void ejbRemove() throws EJBException {
+
+        if (null != mdbInvoker) {
+            mdbInvoker.destroy();
+        }
     }
 }
diff --git a/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/ContextLookupMdbPojoBean.java b/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/ContextLookupMdbPojoBean.java
index 67b3966..5d8a42c 100644
--- a/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/ContextLookupMdbPojoBean.java
+++ b/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/ContextLookupMdbPojoBean.java
@@ -17,54 +17,60 @@
  */
 package org.apache.openejb.test.mdb;
 
-import org.apache.openejb.test.TestFailureException;
-import org.apache.openejb.test.stateless.BasicStatelessHome;
-import org.apache.openejb.test.stateless.BasicStatelessObject;
-import org.apache.openejb.test.stateless.BasicStatelessBusinessLocal;
-import org.apache.openejb.test.stateless.BasicStatelessBusinessRemote;
-import org.apache.openejb.test.stateful.BasicStatefulHome;
-import org.apache.openejb.test.stateful.BasicStatefulObject;
-import org.apache.openejb.test.stateful.BasicStatefulBusinessLocal;
-import org.apache.openejb.test.stateful.BasicStatefulBusinessRemote;
-import org.apache.openejb.test.entity.bmp.BasicBmpHome;
-import org.apache.openejb.test.entity.bmp.BasicBmpObject;
 import junit.framework.Assert;
 import junit.framework.AssertionFailedError;
+import org.apache.openejb.test.TestFailureException;
+import org.apache.openejb.test.entity.bmp.BasicBmpHome;
+import org.apache.openejb.test.entity.bmp.BasicBmpObject;
+import org.apache.openejb.test.stateful.BasicStatefulBusinessLocal;
+import org.apache.openejb.test.stateful.BasicStatefulBusinessRemote;
+import org.apache.openejb.test.stateful.BasicStatefulHome;
+import org.apache.openejb.test.stateful.BasicStatefulObject;
+import org.apache.openejb.test.stateless.BasicStatelessBusinessLocal;
+import org.apache.openejb.test.stateless.BasicStatelessBusinessRemote;
+import org.apache.openejb.test.stateless.BasicStatelessHome;
+import org.apache.openejb.test.stateless.BasicStatelessObject;
 
-import javax.annotation.PreDestroy;
-import javax.sql.DataSource;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.EntityManager;
 import javax.ejb.EJBContext;
 import javax.ejb.EJBException;
 import javax.ejb.MessageDrivenContext;
-import javax.jms.MessageListener;
-import javax.jms.ConnectionFactory;
-import javax.jms.Message;
-import javax.jms.JMSException;
-import javax.jms.TopicConnectionFactory;
-import javax.jms.QueueConnectionFactory;
 import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.MessageProducer;
+import javax.jms.QueueConnectionFactory;
 import javax.jms.Session;
 import javax.jms.Topic;
-import javax.jms.MessageProducer;
-import java.rmi.RemoteException;
+import javax.jms.TopicConnectionFactory;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.sql.DataSource;
 
 public class ContextLookupMdbPojoBean implements MessageListener {
-    private MdbInvoker mdbInvoker;
+    private final MdbInvoker mdbInvoker;
 
     public ContextLookupMdbPojoBean() {
         try {
-            ConnectionFactory connectionFactory = (ConnectionFactory) new InitialContext().lookup("java:comp/env/jms");
+            final ConnectionFactory connectionFactory = (ConnectionFactory) new InitialContext().lookup("java:comp/env/jms");
             mdbInvoker = new MdbInvoker(connectionFactory, this);
         } catch (Exception e) {
             throw new EJBException(e);
         }
     }
 
-    public void onMessage(Message message) {
+    public void ejbRemove() throws EJBException {
+
+        if (null != mdbInvoker) {
+            mdbInvoker.destroy();
+        }
+    }
+
+    @Override
+    public void onMessage(final Message message) {
         try {
 //            System.out.println("\n" +
 //                    "***************************************\n" +
@@ -85,10 +91,10 @@
     public void lookupEntityBean() throws TestFailureException {
         try {
             try {
-                BasicBmpHome home = (BasicBmpHome) getMessageDrivenContext().lookup("stateless/beanReferences/bmp_entity");
+                final BasicBmpHome home = (BasicBmpHome) getMessageDrivenContext().lookup("stateless/beanReferences/bmp_entity");
                 Assert.assertNotNull("The EJBHome looked up is null", home);
 
-                BasicBmpObject object = home.createObject("Enc Bean");
+                final BasicBmpObject object = home.createObject("Enc Bean");
                 Assert.assertNotNull("The EJBObject is null", object);
             } catch (Exception e) {
                 Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
@@ -101,10 +107,10 @@
     public void lookupStatefulBean() throws TestFailureException {
         try {
             try {
-                BasicStatefulHome home = (BasicStatefulHome) getMessageDrivenContext().lookup("stateless/beanReferences/stateful");
+                final BasicStatefulHome home = (BasicStatefulHome) getMessageDrivenContext().lookup("stateless/beanReferences/stateful");
                 Assert.assertNotNull("The EJBHome looked up is null", home);
 
-                BasicStatefulObject object = home.createObject("Enc Bean");
+                final BasicStatefulObject object = home.createObject("Enc Bean");
                 Assert.assertNotNull("The EJBObject is null", object);
             } catch (Exception e) {
                 Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
@@ -117,10 +123,10 @@
     public void lookupStatelessBean() throws TestFailureException {
         try {
             try {
-                BasicStatelessHome home = (BasicStatelessHome) getMessageDrivenContext().lookup("stateless/beanReferences/stateless");
+                final BasicStatelessHome home = (BasicStatelessHome) getMessageDrivenContext().lookup("stateless/beanReferences/stateless");
                 Assert.assertNotNull("The EJBHome looked up is null", home);
 
-                BasicStatelessObject object = home.createObject();
+                final BasicStatelessObject object = home.createObject();
                 Assert.assertNotNull("The EJBObject is null", object);
             } catch (Exception e) {
                 Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
@@ -130,54 +136,54 @@
         }
     }
 
-    public void lookupStatelessBusinessLocal() throws TestFailureException{
-        try{
-            try{
-            BasicStatelessBusinessLocal object = (BasicStatelessBusinessLocal) getMessageDrivenContext().lookup("stateless/beanReferences/stateless-business-local");
-            Assert.assertNotNull("The EJB BusinessLocal is null", object );
-            } catch (Exception e){
-                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+    public void lookupStatelessBusinessLocal() throws TestFailureException {
+        try {
+            try {
+                final BasicStatelessBusinessLocal object = (BasicStatelessBusinessLocal) getMessageDrivenContext().lookup("stateless/beanReferences/stateless-business-local");
+                Assert.assertNotNull("The EJB BusinessLocal is null", object);
+            } catch (Exception e) {
+                Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
             }
-        } catch (AssertionFailedError afe){
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
 
-    public void lookupStatelessBusinessRemote() throws TestFailureException{
-        try{
-            try{
-            BasicStatelessBusinessRemote object = (BasicStatelessBusinessRemote) getMessageDrivenContext().lookup("stateless/beanReferences/stateless-business-remote");
-            Assert.assertNotNull("The EJB BusinessRemote is null", object );
-            } catch (Exception e){
-                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+    public void lookupStatelessBusinessRemote() throws TestFailureException {
+        try {
+            try {
+                final BasicStatelessBusinessRemote object = (BasicStatelessBusinessRemote) getMessageDrivenContext().lookup("stateless/beanReferences/stateless-business-remote");
+                Assert.assertNotNull("The EJB BusinessRemote is null", object);
+            } catch (Exception e) {
+                Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
             }
-        } catch (AssertionFailedError afe){
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
 
-    public void lookupStatefulBusinessLocal() throws TestFailureException{
-        try{
-            try{
-            BasicStatefulBusinessLocal object = (BasicStatefulBusinessLocal) getMessageDrivenContext().lookup("stateless/beanReferences/stateful-business-local");
-            Assert.assertNotNull("The EJB BusinessLocal is null", object );
-            } catch (Exception e){
-                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+    public void lookupStatefulBusinessLocal() throws TestFailureException {
+        try {
+            try {
+                final BasicStatefulBusinessLocal object = (BasicStatefulBusinessLocal) getMessageDrivenContext().lookup("stateless/beanReferences/stateful-business-local");
+                Assert.assertNotNull("The EJB BusinessLocal is null", object);
+            } catch (Exception e) {
+                Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
             }
-        } catch (AssertionFailedError afe){
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
 
-    public void lookupStatefulBusinessRemote() throws TestFailureException{
-        try{
-            try{
-            BasicStatefulBusinessRemote object = (BasicStatefulBusinessRemote) getMessageDrivenContext().lookup("stateless/beanReferences/stateful-business-remote");
-            Assert.assertNotNull("The EJB BusinessRemote is null", object );
-            } catch (Exception e){
-                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+    public void lookupStatefulBusinessRemote() throws TestFailureException {
+        try {
+            try {
+                final BasicStatefulBusinessRemote object = (BasicStatefulBusinessRemote) getMessageDrivenContext().lookup("stateless/beanReferences/stateful-business-remote");
+                Assert.assertNotNull("The EJB BusinessRemote is null", object);
+            } catch (Exception e) {
+                Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
             }
-        } catch (AssertionFailedError afe){
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
@@ -186,8 +192,8 @@
     public void lookupStringEntry() throws TestFailureException {
         try {
             try {
-                String expected = new String("1");
-                String actual = (String) getMessageDrivenContext().lookup("stateless/references/String");
+                final String expected = "1";
+                final String actual = (String) getMessageDrivenContext().lookup("stateless/references/String");
 
                 Assert.assertNotNull("The String looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -203,8 +209,8 @@
     public void lookupDoubleEntry() throws TestFailureException {
         try {
             try {
-                Double expected = new Double(1.0D);
-                Double actual = (Double) getMessageDrivenContext().lookup("stateless/references/Double");
+                final Double expected = 1.0D;
+                final Double actual = (Double) getMessageDrivenContext().lookup("stateless/references/Double");
 
                 Assert.assertNotNull("The Double looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -220,8 +226,8 @@
     public void lookupLongEntry() throws TestFailureException {
         try {
             try {
-                Long expected = new Long(1L);
-                Long actual = (Long) getMessageDrivenContext().lookup("stateless/references/Long");
+                final Long expected = 1L;
+                final Long actual = (Long) getMessageDrivenContext().lookup("stateless/references/Long");
 
                 Assert.assertNotNull("The Long looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -237,8 +243,8 @@
     public void lookupFloatEntry() throws TestFailureException {
         try {
             try {
-                Float expected = new Float(1.0F);
-                Float actual = (Float) getMessageDrivenContext().lookup("stateless/references/Float");
+                final Float expected = 1.0F;
+                final Float actual = (Float) getMessageDrivenContext().lookup("stateless/references/Float");
 
                 Assert.assertNotNull("The Float looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -254,8 +260,8 @@
     public void lookupIntegerEntry() throws TestFailureException {
         try {
             try {
-                Integer expected = new Integer(1);
-                Integer actual = (Integer) getMessageDrivenContext().lookup("stateless/references/Integer");
+                final Integer expected = 1;
+                final Integer actual = (Integer) getMessageDrivenContext().lookup("stateless/references/Integer");
 
                 Assert.assertNotNull("The Integer looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -271,8 +277,8 @@
     public void lookupShortEntry() throws TestFailureException {
         try {
             try {
-                Short expected = new Short((short) 1);
-                Short actual = (Short) getMessageDrivenContext().lookup("stateless/references/Short");
+                final Short expected = (short) 1;
+                final Short actual = (Short) getMessageDrivenContext().lookup("stateless/references/Short");
 
                 Assert.assertNotNull("The Short looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -288,8 +294,8 @@
     public void lookupBooleanEntry() throws TestFailureException {
         try {
             try {
-                Boolean expected = new Boolean(true);
-                Boolean actual = (Boolean) getMessageDrivenContext().lookup("stateless/references/Boolean");
+                final Boolean expected = true;
+                final Boolean actual = (Boolean) getMessageDrivenContext().lookup("stateless/references/Boolean");
 
                 Assert.assertNotNull("The Boolean looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -305,8 +311,8 @@
     public void lookupByteEntry() throws TestFailureException {
         try {
             try {
-                Byte expected = new Byte((byte) 1);
-                Byte actual = (Byte) getMessageDrivenContext().lookup("stateless/references/Byte");
+                final Byte expected = (byte) 1;
+                final Byte actual = (Byte) getMessageDrivenContext().lookup("stateless/references/Byte");
 
                 Assert.assertNotNull("The Byte looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -322,8 +328,8 @@
     public void lookupCharacterEntry() throws TestFailureException {
         try {
             try {
-                Character expected = new Character('D');
-                Character actual = (Character) getMessageDrivenContext().lookup("stateless/references/Character");
+                final Character expected = 'D';
+                final Character actual = (Character) getMessageDrivenContext().lookup("stateless/references/Character");
 
                 Assert.assertNotNull("The Character looked up is null", actual);
                 Assert.assertEquals(expected, actual);
@@ -339,7 +345,7 @@
     public void lookupResource() throws TestFailureException {
         try {
             try {
-                Object obj = getMessageDrivenContext().lookup("datasource");
+                final Object obj = getMessageDrivenContext().lookup("datasource");
                 Assert.assertNotNull("The DataSource is null", obj);
                 Assert.assertTrue("Not an instance of DataSource", obj instanceof DataSource);
             } catch (Exception e) {
@@ -350,97 +356,97 @@
         }
     }
 
-    public void lookupJMSConnectionFactory() throws TestFailureException{
-        try{
-            try{
+    public void lookupJMSConnectionFactory() throws TestFailureException {
+        try {
+            try {
                 Object obj = getMessageDrivenContext().lookup("jms");
                 Assert.assertNotNull("The JMS ConnectionFactory is null", obj);
                 Assert.assertTrue("Not an instance of ConnectionFactory", obj instanceof ConnectionFactory);
-                ConnectionFactory connectionFactory = (ConnectionFactory) obj;
+                final ConnectionFactory connectionFactory = (ConnectionFactory) obj;
                 testJmsConnection(connectionFactory.createConnection());
 
                 obj = getMessageDrivenContext().lookup("TopicCF");
                 Assert.assertNotNull("The JMS TopicConnectionFactory is null", obj);
                 Assert.assertTrue("Not an instance of TopicConnectionFactory", obj instanceof TopicConnectionFactory);
-                TopicConnectionFactory topicConnectionFactory = (TopicConnectionFactory) obj;
+                final TopicConnectionFactory topicConnectionFactory = (TopicConnectionFactory) obj;
                 testJmsConnection(topicConnectionFactory.createConnection());
 
                 obj = getMessageDrivenContext().lookup("QueueCF");
                 Assert.assertNotNull("The JMS QueueConnectionFactory is null", obj);
                 Assert.assertTrue("Not an instance of QueueConnectionFactory", obj instanceof QueueConnectionFactory);
-                QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) obj;
+                final QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) obj;
                 testJmsConnection(queueConnectionFactory.createConnection());
-            } catch (Exception e){
+            } catch (Exception e) {
                 e.printStackTrace();
-                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+                Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
             }
-        } catch (AssertionFailedError afe){
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
 
-    private void testJmsConnection(Connection connection) throws JMSException {
-        Session session = connection.createSession(false, Session.DUPS_OK_ACKNOWLEDGE);
-        Topic topic = session.createTopic("test");
-        MessageProducer producer = session.createProducer(topic);
+    private void testJmsConnection(final Connection connection) throws JMSException {
+        final Session session = connection.createSession(false, Session.DUPS_OK_ACKNOWLEDGE);
+        final Topic topic = session.createTopic("test");
+        final MessageProducer producer = session.createProducer(topic);
         producer.send(session.createMessage());
         producer.close();
         session.close();
         connection.close();
     }
 
-    public void lookupPersistenceUnit() throws TestFailureException{
-        try{
-            try{
-                InitialContext ctx = new InitialContext();
+    public void lookupPersistenceUnit() throws TestFailureException {
+        try {
+            try {
+                final InitialContext ctx = new InitialContext();
                 Assert.assertNotNull("The InitialContext is null", ctx);
-                EntityManagerFactory emf = (EntityManagerFactory)ctx.lookup("java:comp/env/persistence/TestUnit");
-                Assert.assertNotNull("The EntityManagerFactory is null", emf );
+                final EntityManagerFactory emf = (EntityManagerFactory) ctx.lookup("java:comp/env/persistence/TestUnit");
+                Assert.assertNotNull("The EntityManagerFactory is null", emf);
 
-            } catch (Exception e){
-                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+            } catch (Exception e) {
+                Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
             }
-        } catch (AssertionFailedError afe){
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
 
-    public void lookupMessageDrivenContext() throws TestFailureException{
-        try{
-            try{
-                InitialContext ctx = new InitialContext();
+    public void lookupMessageDrivenContext() throws TestFailureException {
+        try {
+            try {
+                final InitialContext ctx = new InitialContext();
                 Assert.assertNotNull("The InitialContext is null", ctx);
 
                 // lookup in enc
-                MessageDrivenContext sctx = (MessageDrivenContext)ctx.lookup("java:comp/env/mdbcontext");
-                Assert.assertNotNull("The MessageDrivenContext got from java:comp/env/mdbcontext is null", sctx );
+                final MessageDrivenContext sctx = (MessageDrivenContext) ctx.lookup("java:comp/env/mdbcontext");
+                Assert.assertNotNull("The MessageDrivenContext got from java:comp/env/mdbcontext is null", sctx);
 
                 // lookup using global name
-                EJBContext ejbCtx = (EJBContext)ctx.lookup("java:comp/EJBContext");
-                Assert.assertNotNull("The MessageDrivenContext got from java:comp/EJBContext is null ", ejbCtx );
-            } catch (Exception e){
-                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+                final EJBContext ejbCtx = (EJBContext) ctx.lookup("java:comp/EJBContext");
+                Assert.assertNotNull("The MessageDrivenContext got from java:comp/EJBContext is null ", ejbCtx);
+            } catch (Exception e) {
+                Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
             }
-        } catch (AssertionFailedError afe){
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
 
     }
 
-    public void lookupPersistenceContext() throws TestFailureException{
-        try{
-            try{
-                InitialContext ctx = new InitialContext();
+    public void lookupPersistenceContext() throws TestFailureException {
+        try {
+            try {
+                final InitialContext ctx = new InitialContext();
                 Assert.assertNotNull("The InitialContext is null", ctx);
-                EntityManager em = (EntityManager)ctx.lookup("java:comp/env/persistence/TestContext");
+                final EntityManager em = (EntityManager) ctx.lookup("java:comp/env/persistence/TestContext");
                 Assert.assertNotNull("The EntityManager is null", em);
 
                 // call a do nothing method to assure entity manager actually exists
                 em.getFlushMode();
-            } catch (Exception e){
-                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+            } catch (Exception e) {
+                Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
             }
-        } catch (AssertionFailedError afe){
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
@@ -449,7 +455,7 @@
      * Set the associated message driven context. The container calls this method
      * after the instance creation.
      */
-    public MessageDrivenContext getMessageDrivenContext() throws EJBException, RemoteException {
+    public MessageDrivenContext getMessageDrivenContext() throws EJBException {
         MessageDrivenContext ejbContext = null;
         try {
             ejbContext = (MessageDrivenContext) new InitialContext().lookup("java:comp/EJBContext");
diff --git a/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/EncMdbBean.java b/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/EncMdbBean.java
index e5d2608..4ac2e8e 100644
--- a/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/EncMdbBean.java
+++ b/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/EncMdbBean.java
@@ -55,17 +55,19 @@
 	private MessageDrivenContext mdbContext = null;
     private MdbInvoker mdbInvoker;
 
-    public void setMessageDrivenContext(MessageDrivenContext ctx) throws EJBException {
+    @Override
+    public void setMessageDrivenContext(final MessageDrivenContext ctx) throws EJBException {
         this.mdbContext = ctx;
         try {
-            ConnectionFactory connectionFactory = (ConnectionFactory) new InitialContext().lookup("java:comp/env/jms");
+            final ConnectionFactory connectionFactory = (ConnectionFactory) new InitialContext().lookup("java:comp/env/jms");
             mdbInvoker = new MdbInvoker(connectionFactory, this);
         } catch (Exception e) {
             throw new EJBException(e);
         }
     }
 
-    public void onMessage(Message message) {
+    @Override
+    public void onMessage(final Message message) {
         try {
 //            System.out.println("\n" +
 //                    "***************************************\n" +
@@ -82,16 +84,17 @@
         }
     }
 
+    @Override
     public void lookupEntityBean() throws TestFailureException {
         try{
             try{
-            InitialContext ctx = new InitialContext();
+            final InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
 
-            BasicBmpHome home = (BasicBmpHome) javax.rmi.PortableRemoteObject.narrow( ctx.lookup("java:comp/env/stateless/beanReferences/bmp_entity"), BasicBmpHome.class );
+            final BasicBmpHome home = (BasicBmpHome) javax.rmi.PortableRemoteObject.narrow( ctx.lookup("java:comp/env/stateless/beanReferences/bmp_entity"), BasicBmpHome.class );
             Assert.assertNotNull("The EJBHome looked up is null",home);
 
-            BasicBmpObject object = home.createObject("Enc Bean");
+            final BasicBmpObject object = home.createObject("Enc Bean");
             Assert.assertNotNull("The EJBObject is null", object );
             } catch (Exception e){
                 Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
@@ -101,16 +104,17 @@
         }
     }
 
+    @Override
     public void lookupStatefulBean() throws TestFailureException{
         try{
             try{
-            InitialContext ctx = new InitialContext();
+            final InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
 
-            BasicStatefulHome home = (BasicStatefulHome) javax.rmi.PortableRemoteObject.narrow( ctx.lookup("java:comp/env/stateless/beanReferences/stateful"), BasicStatefulHome.class );
+            final BasicStatefulHome home = (BasicStatefulHome) javax.rmi.PortableRemoteObject.narrow( ctx.lookup("java:comp/env/stateless/beanReferences/stateful"), BasicStatefulHome.class );
             Assert.assertNotNull("The EJBHome looked up is null",home);
 
-            BasicStatefulObject object = home.createObject("Enc Bean");
+            final BasicStatefulObject object = home.createObject("Enc Bean");
             Assert.assertNotNull("The EJBObject is null", object );
             } catch (Exception e){
                 Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
@@ -120,16 +124,17 @@
         }
     }
 
+    @Override
     public void lookupStatelessBean() throws TestFailureException{
         try{
             try{
-            InitialContext ctx = new InitialContext();
+            final InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
 
-            BasicStatelessHome home = (BasicStatelessHome) javax.rmi.PortableRemoteObject.narrow( ctx.lookup("java:comp/env/stateless/beanReferences/stateless"), BasicStatelessHome.class );
+            final BasicStatelessHome home = (BasicStatelessHome) javax.rmi.PortableRemoteObject.narrow( ctx.lookup("java:comp/env/stateless/beanReferences/stateless"), BasicStatelessHome.class );
             Assert.assertNotNull("The EJBHome looked up is null",home);
 
-            BasicStatelessObject object = home.createObject();
+            final BasicStatelessObject object = home.createObject();
             Assert.assertNotNull("The EJBObject is null", object );
             } catch (Exception e){
                 Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
@@ -139,14 +144,15 @@
         }
     }
 
+    @Override
     public void lookupStatelessBusinessLocal() throws TestFailureException{
         try{
             try{
-            InitialContext ctx = new InitialContext();
+            final InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
 
-                Object o = ctx.lookup("java:comp/env/stateless/beanReferences/stateless-business-local");
-                BasicStatelessBusinessLocal object = (BasicStatelessBusinessLocal) o;
+                final Object o = ctx.lookup("java:comp/env/stateless/beanReferences/stateless-business-local");
+                final BasicStatelessBusinessLocal object = (BasicStatelessBusinessLocal) o;
             Assert.assertNotNull("The EJB BusinessLocal is null", object );
             } catch (Exception e){
                 e.printStackTrace();
@@ -157,13 +163,14 @@
         }
     }
 
+    @Override
     public void lookupStatelessBusinessRemote() throws TestFailureException{
         try{
             try{
-            InitialContext ctx = new InitialContext();
+            final InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
 
-            BasicStatelessBusinessRemote object = (BasicStatelessBusinessRemote) javax.rmi.PortableRemoteObject.narrow( ctx.lookup("java:comp/env/stateless/beanReferences/stateless-business-remote"), BasicStatelessBusinessRemote.class );
+            final BasicStatelessBusinessRemote object = (BasicStatelessBusinessRemote) javax.rmi.PortableRemoteObject.narrow( ctx.lookup("java:comp/env/stateless/beanReferences/stateless-business-remote"), BasicStatelessBusinessRemote.class );
             Assert.assertNotNull("The EJB BusinessRemote is null", object );
             } catch (Exception e){
                 Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
@@ -173,13 +180,14 @@
         }
     }
 
+    @Override
     public void lookupStatefulBusinessLocal() throws TestFailureException{
         try{
             try{
-            InitialContext ctx = new InitialContext();
+            final InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
 
-            BasicStatefulBusinessLocal object = (BasicStatefulBusinessLocal) javax.rmi.PortableRemoteObject.narrow( ctx.lookup("java:comp/env/stateless/beanReferences/stateful-business-local"), BasicStatefulBusinessLocal.class );
+            final BasicStatefulBusinessLocal object = (BasicStatefulBusinessLocal) javax.rmi.PortableRemoteObject.narrow( ctx.lookup("java:comp/env/stateless/beanReferences/stateful-business-local"), BasicStatefulBusinessLocal.class );
             Assert.assertNotNull("The EJB BusinessLocal is null", object );
             } catch (Exception e){
                 Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
@@ -189,13 +197,14 @@
         }
     }
 
+    @Override
     public void lookupStatefulBusinessRemote() throws TestFailureException{
         try{
             try{
-            InitialContext ctx = new InitialContext();
+            final InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
 
-            BasicStatefulBusinessRemote object = (BasicStatefulBusinessRemote) javax.rmi.PortableRemoteObject.narrow( ctx.lookup("java:comp/env/stateless/beanReferences/stateful-business-remote"), BasicStatefulBusinessRemote.class );
+            final BasicStatefulBusinessRemote object = (BasicStatefulBusinessRemote) javax.rmi.PortableRemoteObject.narrow( ctx.lookup("java:comp/env/stateless/beanReferences/stateful-business-remote"), BasicStatefulBusinessRemote.class );
             Assert.assertNotNull("The EJB BusinessRemote is null", object );
             } catch (Exception e){
                 Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
@@ -205,14 +214,15 @@
         }
     }
 
+    @Override
     public void lookupStringEntry() throws TestFailureException{
         try{
             try{
-            InitialContext ctx = new InitialContext();
+            final InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
 
-            String expected = new String("1");
-            String actual   = (String)ctx.lookup("java:comp/env/stateless/references/String");
+            final String expected = "1";
+            final String actual   = (String)ctx.lookup("java:comp/env/stateless/references/String");
 
             Assert.assertNotNull("The String looked up is null", actual );
             Assert.assertEquals(expected, actual );
@@ -225,14 +235,15 @@
         }
     }
 
+    @Override
     public void lookupDoubleEntry() throws TestFailureException{
         try{
             try{
-            InitialContext ctx = new InitialContext();
+            final InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
 
-            Double expected = new Double(1.0D);
-            Double actual   = (Double)ctx.lookup("java:comp/env/stateless/references/Double");
+            final Double expected = 1.0D;
+            final Double actual   = (Double)ctx.lookup("java:comp/env/stateless/references/Double");
 
             Assert.assertNotNull("The Double looked up is null", actual );
             Assert.assertEquals(expected, actual );
@@ -245,14 +256,15 @@
         }
     }
 
+    @Override
     public void lookupLongEntry() throws TestFailureException{
         try{
             try{
-            InitialContext ctx = new InitialContext();
+            final InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
 
-            Long expected = new Long(1L);
-            Long actual   = (Long)ctx.lookup("java:comp/env/stateless/references/Long");
+            final Long expected = 1L;
+            final Long actual   = (Long)ctx.lookup("java:comp/env/stateless/references/Long");
 
             Assert.assertNotNull("The Long looked up is null", actual );
             Assert.assertEquals(expected, actual );
@@ -265,14 +277,15 @@
         }
     }
 
+    @Override
     public void lookupFloatEntry() throws TestFailureException{
         try{
             try{
-            InitialContext ctx = new InitialContext();
+            final InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
 
-            Float expected = new Float(1.0F);
-            Float actual   = (Float)ctx.lookup("java:comp/env/stateless/references/Float");
+            final Float expected = 1.0F;
+            final Float actual   = (Float)ctx.lookup("java:comp/env/stateless/references/Float");
 
             Assert.assertNotNull("The Float looked up is null", actual );
             Assert.assertEquals(expected, actual );
@@ -285,14 +298,15 @@
         }
     }
 
+    @Override
     public void lookupIntegerEntry() throws TestFailureException{
         try{
             try{
-            InitialContext ctx = new InitialContext();
+            final InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
 
-            Integer expected = new Integer(1);
-            Integer actual   = (Integer)ctx.lookup("java:comp/env/stateless/references/Integer");
+            final Integer expected = 1;
+            final Integer actual   = (Integer)ctx.lookup("java:comp/env/stateless/references/Integer");
 
             Assert.assertNotNull("The Integer looked up is null", actual );
             Assert.assertEquals(expected, actual );
@@ -305,14 +319,15 @@
         }
     }
 
+    @Override
     public void lookupShortEntry() throws TestFailureException{
         try{
             try{
-            InitialContext ctx = new InitialContext();
+            final InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
 
-            Short expected = new Short((short)1);
-            Short actual   = (Short)ctx.lookup("java:comp/env/stateless/references/Short");
+            final Short expected = (short) 1;
+            final Short actual   = (Short)ctx.lookup("java:comp/env/stateless/references/Short");
 
             Assert.assertNotNull("The Short looked up is null", actual );
             Assert.assertEquals(expected, actual );
@@ -325,14 +340,15 @@
         }
     }
 
+    @Override
     public void lookupBooleanEntry() throws TestFailureException{
         try{
             try{
-            InitialContext ctx = new InitialContext();
+            final InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
 
-            Boolean expected = new Boolean(true);
-            Boolean actual = (Boolean)ctx.lookup("java:comp/env/stateless/references/Boolean");
+            final Boolean expected = true;
+            final Boolean actual = (Boolean)ctx.lookup("java:comp/env/stateless/references/Boolean");
 
             Assert.assertNotNull("The Boolean looked up is null", actual );
             Assert.assertEquals(expected, actual );
@@ -345,14 +361,15 @@
         }
     }
 
+    @Override
     public void lookupByteEntry() throws TestFailureException{
         try{
             try{
-            InitialContext ctx = new InitialContext();
+            final InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
 
-            Byte expected = new Byte((byte)1);
-            Byte actual   = (Byte)ctx.lookup("java:comp/env/stateless/references/Byte");
+            final Byte expected = (byte) 1;
+            final Byte actual   = (Byte)ctx.lookup("java:comp/env/stateless/references/Byte");
 
             Assert.assertNotNull("The Byte looked up is null", actual );
             Assert.assertEquals(expected, actual );
@@ -365,14 +382,15 @@
         }
     }
 
+    @Override
     public void lookupCharacterEntry() throws TestFailureException{
         try{
             try{
-            InitialContext ctx = new InitialContext();
+            final InitialContext ctx = new InitialContext();
             Assert.assertNotNull("The InitialContext is null", ctx );
 
-            Character expected = new Character('D');
-            Character actual   = (Character)ctx.lookup("java:comp/env/stateless/references/Character");
+            final Character expected = 'D';
+            final Character actual   = (Character)ctx.lookup("java:comp/env/stateless/references/Character");
 
             Assert.assertNotNull("The Character looked up is null", actual );
             Assert.assertEquals(expected, actual );
@@ -385,12 +403,13 @@
         }
     }
 
+    @Override
     public void lookupResource() throws TestFailureException{
         try{
             try{
-                InitialContext ctx = new InitialContext();
+                final InitialContext ctx = new InitialContext();
                 Assert.assertNotNull("The InitialContext is null", ctx);
-                Object obj = ctx.lookup("java:comp/env/datasource");
+                final Object obj = ctx.lookup("java:comp/env/datasource");
                 Assert.assertNotNull("The DataSource is null", obj);
                 Assert.assertTrue("Not an instance of DataSource", obj instanceof DataSource);
             } catch (Exception e){
@@ -401,27 +420,28 @@
         }
     }
 
+    @Override
     public void lookupJMSConnectionFactory() throws TestFailureException{
         try{
             try{
-                InitialContext ctx = new InitialContext();
+                final InitialContext ctx = new InitialContext();
                 Assert.assertNotNull("The InitialContext is null", ctx);
                 Object obj = ctx.lookup("java:comp/env/jms");
                 Assert.assertNotNull("The JMS ConnectionFactory is null", obj);
                 Assert.assertTrue("Not an instance of ConnectionFactory", obj instanceof ConnectionFactory);
-                ConnectionFactory connectionFactory = (ConnectionFactory) obj;
+                final ConnectionFactory connectionFactory = (ConnectionFactory) obj;
                 testJmsConnection(connectionFactory.createConnection());
 
                 obj = ctx.lookup("java:comp/env/TopicCF");
                 Assert.assertNotNull("The JMS TopicConnectionFactory is null", obj);
                 Assert.assertTrue("Not an instance of TopicConnectionFactory", obj instanceof TopicConnectionFactory);
-                TopicConnectionFactory topicConnectionFactory = (TopicConnectionFactory) obj;
+                final TopicConnectionFactory topicConnectionFactory = (TopicConnectionFactory) obj;
                 testJmsConnection(topicConnectionFactory.createConnection());
 
                 obj = ctx.lookup("java:comp/env/QueueCF");
                 Assert.assertNotNull("The JMS QueueConnectionFactory is null", obj);
                 Assert.assertTrue("Not an instance of QueueConnectionFactory", obj instanceof QueueConnectionFactory);
-                QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) obj;
+                final QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) obj;
                 testJmsConnection(queueConnectionFactory.createConnection());
             } catch (Exception e){
                 e.printStackTrace();
@@ -432,22 +452,23 @@
         }
     }
 
-    private void testJmsConnection(javax.jms.Connection connection) throws JMSException {
-        Session session = connection.createSession(false, Session.DUPS_OK_ACKNOWLEDGE);
-        Topic topic = session.createTopic("test");
-        MessageProducer producer = session.createProducer(topic);
+    private void testJmsConnection(final javax.jms.Connection connection) throws JMSException {
+        final Session session = connection.createSession(false, Session.DUPS_OK_ACKNOWLEDGE);
+        final Topic topic = session.createTopic("test");
+        final MessageProducer producer = session.createProducer(topic);
         producer.send(session.createMessage());
         producer.close();
         session.close();
         connection.close();
     }
 
+    @Override
     public void lookupPersistenceUnit() throws TestFailureException{
         try{
             try{
-                InitialContext ctx = new InitialContext();
+                final InitialContext ctx = new InitialContext();
                 Assert.assertNotNull("The InitialContext is null", ctx);
-                EntityManagerFactory emf = (EntityManagerFactory)ctx.lookup("java:comp/env/persistence/TestUnit");
+                final EntityManagerFactory emf = (EntityManagerFactory)ctx.lookup("java:comp/env/persistence/TestUnit");
                 Assert.assertNotNull("The EntityManagerFactory is null", emf );
 
             } catch (Exception e){
@@ -458,12 +479,13 @@
         }
     }
 
+    @Override
     public void lookupPersistenceContext() throws TestFailureException{
         try{
             try{
-                InitialContext ctx = new InitialContext();
+                final InitialContext ctx = new InitialContext();
                 Assert.assertNotNull("The InitialContext is null", ctx);
-                EntityManager em = (EntityManager)ctx.lookup("java:comp/env/persistence/TestContext");
+                final EntityManager em = (EntityManager)ctx.lookup("java:comp/env/persistence/TestContext");
                 Assert.assertNotNull("The EntityManager is null", em);
 
                 // call a do nothing method to assure entity manager actually exists
@@ -476,18 +498,19 @@
         }
     }
 
+    @Override
     public void lookupMessageDrivenContext() throws TestFailureException{
         try{
             try{
-                InitialContext ctx = new InitialContext();
+                final InitialContext ctx = new InitialContext();
                 Assert.assertNotNull("The InitialContext is null", ctx);
 
                 // lookup in enc
-                MessageDrivenContext messageDrivenContext = (MessageDrivenContext)ctx.lookup("java:comp/env/mdbcontext");
+                final MessageDrivenContext messageDrivenContext = (MessageDrivenContext)ctx.lookup("java:comp/env/mdbcontext");
                 Assert.assertNotNull("The SessionContext got from java:comp/env/mdbcontext is null", messageDrivenContext );
 
                 // lookup using global name
-                EJBContext ejbCtx = (EJBContext)ctx.lookup("java:comp/EJBContext");
+                final EJBContext ejbCtx = (EJBContext)ctx.lookup("java:comp/EJBContext");
                 Assert.assertNotNull("The SessionContext got from java:comp/EJBContext is null ", ejbCtx );
 
                 // verify context was set via legacy set method
@@ -504,6 +527,11 @@
     public void ejbCreate() throws javax.ejb.CreateException{
     }
 
+    @Override
     public void ejbRemove() throws EJBException {
+
+        if(null != mdbInvoker){
+            mdbInvoker.destroy();
+        }
     }
 }
diff --git a/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/FieldInjectionMdbBean.java b/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/FieldInjectionMdbBean.java
index c65e0f5..46fc417 100644
--- a/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/FieldInjectionMdbBean.java
+++ b/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/FieldInjectionMdbBean.java
@@ -17,36 +17,34 @@
  */
 package org.apache.openejb.test.mdb;
 
+import junit.framework.Assert;
+import junit.framework.AssertionFailedError;
+import org.apache.openejb.test.TestFailureException;
 import org.apache.openejb.test.entity.bmp.BasicBmpHome;
-import org.apache.openejb.test.stateful.BasicStatefulHome;
 import org.apache.openejb.test.stateful.BasicStatefulBusinessLocal;
 import org.apache.openejb.test.stateful.BasicStatefulBusinessRemote;
-import org.apache.openejb.test.stateless.BasicStatelessHome;
+import org.apache.openejb.test.stateful.BasicStatefulHome;
 import org.apache.openejb.test.stateless.BasicStatelessBusinessLocal;
 import org.apache.openejb.test.stateless.BasicStatelessBusinessRemote;
-import org.apache.openejb.test.TestFailureException;
+import org.apache.openejb.test.stateless.BasicStatelessHome;
 
-import javax.annotation.PreDestroy;
 import javax.ejb.CreateException;
 import javax.ejb.EJBException;
 import javax.ejb.MessageDrivenBean;
 import javax.ejb.MessageDrivenContext;
-import javax.sql.DataSource;
 import javax.jms.ConnectionFactory;
-import javax.jms.QueueConnectionFactory;
-import javax.jms.TopicConnectionFactory;
 import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.MessageProducer;
+import javax.jms.QueueConnectionFactory;
 import javax.jms.Session;
 import javax.jms.Topic;
-import javax.jms.MessageProducer;
-import javax.jms.MessageListener;
-import javax.jms.Message;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.EntityManager;
+import javax.jms.TopicConnectionFactory;
 import javax.naming.InitialContext;
-
-import junit.framework.Assert;
-import junit.framework.AssertionFailedError;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.sql.DataSource;
 
 public class FieldInjectionMdbBean implements EncMdbObject, MessageDrivenBean, MessageListener {
     private MessageDrivenContext ejbContext;
@@ -79,17 +77,19 @@
     private MessageDrivenContext mdbContext = null;
     private MdbInvoker mdbInvoker;
 
-    public void setMessageDrivenContext(MessageDrivenContext ctx) throws EJBException {
+    @Override
+    public void setMessageDrivenContext(final MessageDrivenContext ctx) throws EJBException {
         this.mdbContext = ctx;
         try {
-            ConnectionFactory connectionFactory = (ConnectionFactory) new InitialContext().lookup("java:comp/env/jms");
+            final ConnectionFactory connectionFactory = (ConnectionFactory) new InitialContext().lookup("java:comp/env/jms");
             mdbInvoker = new MdbInvoker(connectionFactory, this);
         } catch (Exception e) {
             throw new EJBException(e);
         }
     }
 
-    public void onMessage(Message message) {
+    @Override
+    public void onMessage(final Message message) {
         try {
 //            System.out.println("\n" +
 //                    "***************************************\n" +
@@ -109,6 +109,7 @@
     public void ejbCreate() throws CreateException {
     }
 
+    @Override
     public void lookupEntityBean() throws TestFailureException {
         try {
             Assert.assertNotNull("The EJBObject is null", bmpHome);
@@ -117,6 +118,7 @@
         }
     }
 
+    @Override
     public void lookupStatefulBean() throws TestFailureException {
         try {
             Assert.assertNotNull("The EJBObject is null", statefulHome);
@@ -125,6 +127,7 @@
         }
     }
 
+    @Override
     public void lookupStatelessBean() throws TestFailureException {
         try {
             Assert.assertNotNull("The EJBObject is null", statelessHome);
@@ -133,41 +136,46 @@
         }
     }
 
-    public void lookupStatelessBusinessLocal() throws TestFailureException{
-        try{
-            Assert.assertNotNull("The EJB BusinessLocal is null", statelessBusinessLocal );
-        } catch (AssertionFailedError afe){
+    @Override
+    public void lookupStatelessBusinessLocal() throws TestFailureException {
+        try {
+            Assert.assertNotNull("The EJB BusinessLocal is null", statelessBusinessLocal);
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
 
-    public void lookupStatelessBusinessRemote() throws TestFailureException{
-        try{
-            Assert.assertNotNull("The EJB BusinessRemote is null", statelessBusinessRemote );
-        } catch (AssertionFailedError afe){
+    @Override
+    public void lookupStatelessBusinessRemote() throws TestFailureException {
+        try {
+            Assert.assertNotNull("The EJB BusinessRemote is null", statelessBusinessRemote);
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
 
-    public void lookupStatefulBusinessLocal() throws TestFailureException{
-        try{
-            Assert.assertNotNull("The EJB BusinessLocal is null", statefulBusinessLocal );
-        } catch (AssertionFailedError afe){
+    @Override
+    public void lookupStatefulBusinessLocal() throws TestFailureException {
+        try {
+            Assert.assertNotNull("The EJB BusinessLocal is null", statefulBusinessLocal);
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
 
-    public void lookupStatefulBusinessRemote() throws TestFailureException{
-        try{
-            Assert.assertNotNull("The EJB BusinessRemote is null", statefulBusinessRemote );
-        } catch (AssertionFailedError afe){
+    @Override
+    public void lookupStatefulBusinessRemote() throws TestFailureException {
+        try {
+            Assert.assertNotNull("The EJB BusinessRemote is null", statefulBusinessRemote);
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
 
+    @Override
     public void lookupStringEntry() throws TestFailureException {
         try {
-            String expected = new String("1");
+            final String expected = "1";
             Assert.assertNotNull("The String looked up is null", striing);
             Assert.assertEquals(expected, striing);
         } catch (AssertionFailedError afe) {
@@ -175,9 +183,10 @@
         }
     }
 
+    @Override
     public void lookupDoubleEntry() throws TestFailureException {
         try {
-            Double expected = new Double(1.0D);
+            final Double expected = 1.0D;
 
             Assert.assertNotNull("The Double looked up is null", doouble);
             Assert.assertEquals(expected, doouble);
@@ -187,9 +196,10 @@
         }
     }
 
+    @Override
     public void lookupLongEntry() throws TestFailureException {
         try {
-            Long expected = new Long(1L);
+            final Long expected = 1L;
 
             Assert.assertNotNull("The Long looked up is null", loong);
             Assert.assertEquals(expected, loong);
@@ -198,9 +208,10 @@
         }
     }
 
+    @Override
     public void lookupFloatEntry() throws TestFailureException {
         try {
-            Float expected = new Float(1.0F);
+            final Float expected = 1.0F;
 
             Assert.assertNotNull("The Float looked up is null", flooat);
             Assert.assertEquals(expected, flooat);
@@ -209,9 +220,10 @@
         }
     }
 
+    @Override
     public void lookupIntegerEntry() throws TestFailureException {
         try {
-            Integer expected = new Integer(1);
+            final Integer expected = 1;
 
             Assert.assertNotNull("The Integer looked up is null", inteeger);
             Assert.assertEquals(expected, inteeger);
@@ -221,9 +233,10 @@
         }
     }
 
+    @Override
     public void lookupShortEntry() throws TestFailureException {
         try {
-            Short expected = new Short((short) 1);
+            final Short expected = (short) 1;
 
             Assert.assertNotNull("The Short looked up is null", shoort);
             Assert.assertEquals(expected, shoort);
@@ -232,9 +245,10 @@
         }
     }
 
+    @Override
     public void lookupBooleanEntry() throws TestFailureException {
         try {
-            Boolean expected = new Boolean(true);
+            final Boolean expected = true;
 
             Assert.assertNotNull("The Boolean looked up is null", booolean);
             Assert.assertEquals(expected, booolean);
@@ -243,9 +257,10 @@
         }
     }
 
+    @Override
     public void lookupByteEntry() throws TestFailureException {
         try {
-            Byte expected = new Byte((byte) 1);
+            final Byte expected = (byte) 1;
 
             Assert.assertNotNull("The Byte looked up is null", byyte);
             Assert.assertEquals(expected, byyte);
@@ -254,9 +269,10 @@
         }
     }
 
+    @Override
     public void lookupCharacterEntry() throws TestFailureException {
         try {
-            Character expected = new Character('D');
+            final Character expected = 'D';
 
             Assert.assertNotNull("The Character looked up is null", chaaracter);
             Assert.assertEquals(expected, chaaracter);
@@ -265,6 +281,7 @@
         }
     }
 
+    @Override
     public void lookupResource() throws TestFailureException {
         try {
             Assert.assertNotNull("The DataSource is null", daataSource);
@@ -273,31 +290,33 @@
         }
     }
 
-    public void lookupJMSConnectionFactory() throws TestFailureException{
-        try{
-            try{
+    @Override
+    public void lookupJMSConnectionFactory() throws TestFailureException {
+        try {
+            try {
                 testJmsConnection(coonnectionFactory.createConnection());
                 testJmsConnection(queueCoonnectionFactory.createConnection());
                 testJmsConnection(topicCoonnectionFactory.createConnection());
-            } catch (Exception e){
+            } catch (Exception e) {
                 e.printStackTrace();
-                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+                Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
             }
-        } catch (AssertionFailedError afe){
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
 
-    private void testJmsConnection(javax.jms.Connection connection) throws JMSException {
-        Session session = connection.createSession(false, Session.DUPS_OK_ACKNOWLEDGE);
-        Topic topic = session.createTopic("test");
-        MessageProducer producer = session.createProducer(topic);
+    private void testJmsConnection(final javax.jms.Connection connection) throws JMSException {
+        final Session session = connection.createSession(false, Session.DUPS_OK_ACKNOWLEDGE);
+        final Topic topic = session.createTopic("test");
+        final MessageProducer producer = session.createProducer(topic);
         producer.send(session.createMessage());
         producer.close();
         session.close();
         connection.close();
     }
 
+    @Override
     public void lookupPersistenceUnit() throws TestFailureException {
         try {
             Assert.assertNotNull("The EntityManagerFactory is null", emf);
@@ -306,6 +325,7 @@
         }
     }
 
+    @Override
     public void lookupPersistenceContext() throws TestFailureException {
         try {
             Assert.assertNotNull("The EntityManager is null", em);
@@ -321,6 +341,7 @@
         }
     }
 
+    @Override
     public void lookupMessageDrivenContext() throws TestFailureException {
         try {
             Assert.assertNotNull("The MessageDrivenContext is null", ejbContext);
@@ -330,6 +351,11 @@
 
     }
 
+    @Override
     public void ejbRemove() throws EJBException {
+
+        if (null != mdbInvoker) {
+            mdbInvoker.destroy();
+        }
     }
 }
diff --git a/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/InterceptorMdbBean.java b/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/InterceptorMdbBean.java
index 6496332..37f1d31 100644
--- a/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/InterceptorMdbBean.java
+++ b/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/InterceptorMdbBean.java
@@ -18,8 +18,11 @@
 
 package org.apache.openejb.test.mdb;
 
+import junit.framework.Assert;
+import junit.framework.AssertionFailedError;
+import org.apache.openejb.test.TestFailureException;
+
 import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
 import javax.annotation.Resource;
 import javax.ejb.ActivationConfigProperty;
 import javax.ejb.EJBException;
@@ -34,19 +37,12 @@
 import javax.jms.JMSException;
 import javax.jms.Message;
 import javax.jms.MessageListener;
-import javax.jms.MessageProducer;
 import javax.jms.Session;
-import javax.naming.InitialContext;
 
-import junit.framework.Assert;
-import junit.framework.AssertionFailedError;
-
-import org.apache.openejb.test.TestFailureException;
-
-@Interceptors ({MdbInterceptor.class})
+@Interceptors({MdbInterceptor.class})
 @MessageDriven(activationConfig = {
-        @ActivationConfigProperty(propertyName="destinationType", propertyValue = "javax.jms.Queue"),
-        @ActivationConfigProperty(propertyName="destination", propertyValue = "InterceptorMdbBean")})
+        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
+        @ActivationConfigProperty(propertyName = "destination", propertyValue = "InterceptorMdbBean")})
 public class InterceptorMdbBean implements MessageListener, MessageDrivenBean {
 
     private boolean classLevelBusinessMethodInterception = false;
@@ -57,17 +53,18 @@
     private Session session;
     private Connection connection;
     protected MdbInvoker mdbInvoker;
-    @Resource(name="jms", type=javax.jms.QueueConnectionFactory.class)
+    @Resource(name = "jms", type = javax.jms.QueueConnectionFactory.class)
     private ConnectionFactory connectionFactory;
 
-    public void onMessage(Message msg) {
+    @Override
+    public void onMessage(final Message msg) {
         try {
             classLevelBusinessMethodInterception = msg.getBooleanProperty("ClassLevelBusinessMethodInterception");
             methodLevelBusinessMethodInterception = msg.getBooleanProperty("MethodLevelBusinessMethodInterception");
             try {
                 msg.acknowledge();
             } catch (JMSException e) {
-              e.printStackTrace();
+                e.printStackTrace();
             }
             mdbInvoker.onMessage(msg);
         } catch (Throwable e) {
@@ -76,23 +73,21 @@
     }
 
     @AroundInvoke
-    public Object mdbInterceptor(InvocationContext ctx) throws Exception
-    {
-       Object[] objArr = ctx.getParameters();
-       Message msg = (Message)objArr[0];
-       msg.setBooleanProperty("MethodLevelBusinessMethodInterception",true);
-       ctx.setParameters(objArr);
-       return ctx.proceed();
+    public Object aroundInvoke(final InvocationContext ctx) throws Exception {
+        final Object[] objArr = ctx.getParameters();
+        final Message msg = (Message) objArr[0];
+        msg.setBooleanProperty("MethodLevelBusinessMethodInterception", true);
+        ctx.setParameters(objArr);
+        return ctx.proceed();
     }
 
     @PostConstruct
-    public void ejbCreate() throws EJBException
-    {
+    public void ejbCreate() throws EJBException {
         methodLevelCreateMethodInterception = true;
     }
 
 
-    public void checkMethodLevelBusinessMethodInterception() throws TestFailureException{
+    public void checkMethodLevelBusinessMethodInterception() throws TestFailureException {
         try {
             Assert.assertTrue("Method Level Business Method Interception failed for Mdb", methodLevelBusinessMethodInterception);
         } catch (AssertionFailedError afe) {
@@ -100,7 +95,7 @@
         }
     }
 
-    public void checkMethodLevelCreateMethodInterception() throws TestFailureException{
+    public void checkMethodLevelCreateMethodInterception() throws TestFailureException {
         try {
             Assert.assertTrue("Method Level Business Method Interception failed for Mdb", methodLevelCreateMethodInterception);
         } catch (AssertionFailedError afe) {
@@ -109,7 +104,7 @@
     }
 
 
-    public void checkClassLevelBusinessMethodInterception() throws TestFailureException{
+    public void checkClassLevelBusinessMethodInterception() throws TestFailureException {
         try {
             Assert.assertTrue("Class Level Business Method Interception failed for Mdb", classLevelBusinessMethodInterception);
         } catch (AssertionFailedError afe) {
@@ -117,7 +112,7 @@
         }
     }
 
-    public void checkClassLevelCreateMethodInterception() throws TestFailureException{
+    public void checkClassLevelCreateMethodInterception() throws TestFailureException {
         try {
             Assert.assertTrue("Class Level Business Method Interception failed for Mdb", classLevelCreateMethodInterception);
         } catch (AssertionFailedError afe) {
@@ -126,12 +121,17 @@
     }
 
 
+    @Override
     public void ejbRemove() throws EJBException {
         // TODO Auto-generated method stub
 
+        if (null != mdbInvoker) {
+            mdbInvoker.destroy();
+        }
     }
 
-    public void setMessageDrivenContext(MessageDrivenContext ctx) throws EJBException {
+    @Override
+    public void setMessageDrivenContext(final MessageDrivenContext ctx) throws EJBException {
         this.mdbContext = ctx;
         try {
             mdbInvoker = new MdbInvoker(connectionFactory, this);
diff --git a/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/MdbInvoker.java b/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/MdbInvoker.java
index d63eebf..5638138 100644
--- a/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/MdbInvoker.java
+++ b/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/MdbInvoker.java
@@ -19,6 +19,7 @@
 
 import javax.jms.Connection;
 import javax.jms.ConnectionFactory;
+import javax.jms.DeliveryMode;
 import javax.jms.JMSException;
 import javax.jms.Message;
 import javax.jms.MessageListener;
@@ -34,37 +35,56 @@
 import java.util.TreeMap;
 
 public class MdbInvoker implements MessageListener {
+
     private final Map<String, Method> signatures = new TreeMap<String, Method>();
+    private final ConnectionFactory connectionFactory;
     private final Object target;
+
     private Connection connection;
     private Session session;
-    private ConnectionFactory connectionFactory;
+    private MessageProducer replyProducer = null;
 
-    public MdbInvoker(ConnectionFactory connectionFactory, Object target) throws JMSException {
-        this.target = target;
+    public MdbInvoker(final ConnectionFactory connectionFactory, final Object target) throws JMSException {
+
         this.connectionFactory = connectionFactory;
-        for (Method method : target.getClass().getMethods()) {
-            String signature = MdbUtil.getSignature(method);
+        this.target = target;
+
+        for (final Method method : target.getClass().getMethods()) {
+            final String signature = MdbUtil.getSignature(method);
             signatures.put(signature, method);
         }
     }
 
+    @Override
+    protected void finalize() throws Throwable {
+
+        try {
+            this.destroy();
+        } finally {
+            super.finalize();
+        }
+    }
+
     public synchronized void destroy() {
+        MdbUtil.close(replyProducer);
         MdbUtil.close(session);
         session = null;
         MdbUtil.close(connection);
         connection = null;
     }
 
-    private synchronized Session getSession() throws JMSException{
-        connection = connectionFactory.createConnection();
-        connection.start();
+    private synchronized Session getSession() throws JMSException {
+
+        this.connection = this.connectionFactory.createConnection();
+        this.connection.start();
+
         boolean isBeanManagedTransaction = false;
 
         try {
             new InitialContext().lookup("java:comp/UserTransaction");
             isBeanManagedTransaction = true;
         } catch (NamingException e) {
+            //Ignore - Not transacted
         }
 
         if (isBeanManagedTransaction) {
@@ -72,34 +92,43 @@
         } else {
             session = connection.createSession(true, Session.SESSION_TRANSACTED);
         }
+
+        this.replyProducer = this.session.createProducer(null);
+        this.replyProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
+
         return session;
     }
 
-    public void onMessage(Message message) {
-        if (!(message instanceof ObjectMessage)) return;
+    @Override
+    public void onMessage(final Message message) {
 
         try {
-            Session session = getSession();
+
+            if (!(message instanceof ObjectMessage)) {
+                return;
+            }
+
+            final Session session = getSession();
             if (session == null) throw new IllegalStateException("Invoker has been destroyed");
 
             if (message == null) throw new NullPointerException("request message is null");
             if (!(message instanceof ObjectMessage)) throw new IllegalArgumentException("Expected a ObjectMessage request but got a " + message.getClass().getName());
-            ObjectMessage responseMessage = (ObjectMessage) message;
-            Serializable object = responseMessage.getObject();
+            final Serializable object = ((ObjectMessage) message).getObject();
             if (object == null) throw new NullPointerException("object in ObjectMessage is null");
             if (!(object instanceof Map)) {
-                if (message instanceof ObjectMessage) throw new IllegalArgumentException("Expected a Map contained in the ObjectMessage request but got a " + object.getClass().getName());
+                if (message instanceof ObjectMessage)
+                    throw new IllegalArgumentException("Expected a Map contained in the ObjectMessage request but got a " + object.getClass().getName());
             }
-            Map request = (Map) object;
+            final Map request = (Map) object;
 
-            String signature = (String) request.get("method");
+            final String signature = (String) request.get("method");
             if (signature == null) throw new NullPointerException("method property is null");
-            Method method = signatures.get(signature);
+            final Method method = signatures.get(signature);
             if (method == null) throw new IllegalArgumentException("no such method " + signature + "; known methods are " + signatures.keySet());
-            Object[] args = (Object[]) request.get("args");
+            final Object[] args = (Object[]) request.get("args");
 
             boolean exception = false;
-            Object result = null;
+            Object result;
             try {
                 result = method.invoke(target, args);
             } catch (IllegalAccessException e) {
@@ -109,39 +138,35 @@
                 result = e.getCause();
                 if (result == null) result = e;
                 exception = true;
+            } catch (Exception e) {
+                result = e.getCause();
+                if (result == null) result = e;
+                exception = true;
             }
 
-            MessageProducer producer = null;
             try {
                 // create response
-                Map<String, Object> response = new TreeMap<String, Object>();
+                final Map<String, Object> response = new TreeMap<String, Object>();
                 if (exception) {
                     response.put("exception", "true");
                 }
                 response.put("return", result);
 
                 // create response message
-                ObjectMessage resMessage = session.createObjectMessage();
-                resMessage.setJMSCorrelationID(responseMessage.getJMSCorrelationID());
+                final ObjectMessage resMessage = session.createObjectMessage();
+                resMessage.setJMSCorrelationID(message.getJMSCorrelationID());
                 resMessage.setObject((Serializable) response);
 
                 // send response message
-                producer = session.createProducer(responseMessage.getJMSReplyTo());
-                producer.send(resMessage);
-//                System.out.println("\n" +
-//                        "***************************************\n" +
-//                        "Sent response message: " + responseMessage + "\n" +
-//                        "         response map: " + response + "\n" +
-//                        "             to queue: " + message.getJMSReplyTo() + "\n" +
-//                        "***************************************\n\n");
+                replyProducer.send(message.getJMSReplyTo(), resMessage);
+
             } catch (Exception e) {
                 e.printStackTrace();
-            } finally {
-                MdbUtil.close(producer);
-                destroy();
             }
         } catch (Throwable e) {
             e.printStackTrace();
+        } finally {
+            this.destroy();
         }
     }
 }
diff --git a/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/MdbProxy.java b/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/MdbProxy.java
index 54146dd..f50b740 100644
--- a/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/MdbProxy.java
+++ b/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/MdbProxy.java
@@ -17,63 +17,65 @@
  */
 package org.apache.openejb.test.mdb;
 
-import javax.jms.ConnectionFactory;
-import javax.jms.JMSException;
 import javax.jms.Connection;
-import javax.jms.Session;
-import javax.jms.MessageProducer;
-import javax.jms.Destination;
+import javax.jms.ConnectionFactory;
 import javax.jms.DeliveryMode;
-import javax.jms.ObjectMessage;
-import javax.jms.MessageConsumer;
+import javax.jms.Destination;
+import javax.jms.JMSException;
 import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.ObjectMessage;
+import javax.jms.Session;
+import java.io.Serializable;
 import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Proxy;
 import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
 import java.util.Map;
 import java.util.TreeMap;
 import java.util.UUID;
-import java.io.Serializable;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 public class MdbProxy {
     @SuppressWarnings({"unchecked"})
-    public static <T> T newProxyInstance(Class<T> type, ConnectionFactory connectionFactory, String requestQueueName) throws JMSException {
+    public static <T> T newProxyInstance(final Class<T> type, final ConnectionFactory connectionFactory, final String requestQueueName) throws JMSException {
         ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
         if (classLoader == null) classLoader = type.getClassLoader();
         if (classLoader == null) classLoader = ClassLoader.getSystemClassLoader();
 
-        InvocationHandler invocationHandler = new MdbInvocationHandler(connectionFactory, requestQueueName);
-        Object proxy = Proxy.newProxyInstance(classLoader, new Class[]{type}, invocationHandler);
+        final InvocationHandler invocationHandler = new MdbInvocationHandler(connectionFactory, requestQueueName);
+        final Object proxy = Proxy.newProxyInstance(classLoader, new Class[]{type}, invocationHandler);
         return (T) proxy;
     }
 
     @SuppressWarnings({"unchecked"})
-    public static <T> T newProxyInstance(Class<T> type, ConnectionFactory connectionFactory, Destination requestQueue) throws JMSException {
+    public static <T> T newProxyInstance(final Class<T> type, final ConnectionFactory connectionFactory, final Destination requestQueue) throws JMSException {
         ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
         if (classLoader == null) classLoader = type.getClassLoader();
         if (classLoader == null) classLoader = ClassLoader.getSystemClassLoader();
 
-        InvocationHandler invocationHandler = new MdbInvocationHandler(connectionFactory, requestQueue);
-        Object proxy = Proxy.newProxyInstance(classLoader, new Class[]{type}, invocationHandler);
+        final InvocationHandler invocationHandler = new MdbInvocationHandler(connectionFactory, requestQueue);
+        final Object proxy = Proxy.newProxyInstance(classLoader, new Class[]{type}, invocationHandler);
         return (T) proxy;
     }
 
-    public static void destroyProxy(Object proxy) {
-        InvocationHandler handler = Proxy.getInvocationHandler(proxy);
-        if (handler instanceof MdbProxy) {
-            MdbInvocationHandler mdbInvocationHandler = (MdbInvocationHandler) handler;
+    public static void destroyProxy(final Object proxy) {
+        final InvocationHandler handler = Proxy.getInvocationHandler(proxy);
+        if (MdbProxy.class.isInstance(handler)) {
+            final MdbInvocationHandler mdbInvocationHandler = (MdbInvocationHandler) handler;
             mdbInvocationHandler.destroy();
         }
     }
 
     private static class MdbInvocationHandler implements InvocationHandler {
-        private static final int MAX_RESPONSE_WAIT = 30000;
+        private static final int MAX_RESPONSE_WAIT = Integer.parseInt(System.getProperty("max.response.wait", "45000"));
         private Connection connection;
         private Session session;
         private MessageProducer producer;
-        private Destination requestQueue;
+        private final Destination requestQueue;
 
-        public MdbInvocationHandler(ConnectionFactory connectionFactory, String requestQueueName) throws JMSException {
+        public MdbInvocationHandler(final ConnectionFactory connectionFactory, final String requestQueueName) throws JMSException {
             // open a connection
             connection = connectionFactory.createConnection();
             connection.start();
@@ -89,7 +91,7 @@
             producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
         }
 
-        public MdbInvocationHandler(ConnectionFactory connectionFactory, Destination requestQueue) throws JMSException {
+        public MdbInvocationHandler(final ConnectionFactory connectionFactory, final Destination requestQueue) throws JMSException {
             this.requestQueue = requestQueue;
 
             // open a connection
@@ -121,70 +123,69 @@
             return producer;
         }
 
-        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
-            Session session = getSession();
-            if (session == null) throw new IllegalStateException("Proxy has been destroyed");
+        @Override
+        public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable {
+            final Session tempSession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+            if (tempSession == null) throw new IllegalStateException("Proxy has been destroyed");
 
             // create request
-            Map<String,Object> request = new TreeMap<String,Object>();
-            String signature = MdbUtil.getSignature(method);
+            final Map<String, Object> request = new TreeMap<String, Object>();
+            final String signature = MdbUtil.getSignature(method);
             request.put("method", signature);
             request.put("args", args);
 
             // create a new temp response queue and consumer
             // this is very inefficient, but eliminates a whole class of errors
-            Destination responseQueue = session.createTemporaryQueue();
+            final String correlationId = UUID.randomUUID().toString();
 
-            // Create a messages
-            ObjectMessage requestMessage = session.createObjectMessage();
-            requestMessage.setJMSReplyTo(responseQueue);
-            String correlationId = UUID.randomUUID().toString();
-            requestMessage.setJMSCorrelationID(correlationId);
-            requestMessage.setObject((Serializable) request);
-
+            //final Destination responseQueue = tempSession.createTemporaryQueue();
+            final Destination responseQueue = tempSession.createQueue(correlationId);
 
             // create a producer and consumers used to send requests and receive response
             MessageConsumer consumer = null;
             try {
+
+                // Wait for a message
+                // Again this is quite inefficient
+                consumer = tempSession.createConsumer(responseQueue);
+
+                // Create a message
+                final ObjectMessage requestMessage = tempSession.createObjectMessage();
+                requestMessage.setJMSReplyTo(responseQueue);
+                requestMessage.setJMSCorrelationID(correlationId);
+                requestMessage.setObject((Serializable) request);
+
                 // Send the request
                 getProducer().send(requestMessage);
 
-//                System.out.println("\n" + "***************************************\n" +
-//                        "Sent request message: " + requestMessage + "\n" +
-//                        "         request map: " + request + "\n" +
-//                        "            to queue: " + requestQueue + "\n" +
-//                        "***************************************\n\n");
-//
-                // Wait for a message
-                // Again this is quite inefficient
-                consumer = session.createConsumer(responseQueue);
-
                 // wait for the message
-                Message message = consumer.receive(MdbProxy.MdbInvocationHandler.MAX_RESPONSE_WAIT);
+                final Message message = consumer.receive(MdbProxy.MdbInvocationHandler.MAX_RESPONSE_WAIT);
 
                 // verify message
-                if (message == null) throw new NullPointerException("Did not get a response withing " + MdbProxy.MdbInvocationHandler.MAX_RESPONSE_WAIT + "ms");
+                if (message == null) throw new NullPointerException("Did not get a response within " + MdbProxy.MdbInvocationHandler.MAX_RESPONSE_WAIT + "ms");
                 if (!correlationId.equals(message.getJMSCorrelationID())) {
                     throw new IllegalStateException("Received a response message with the wrong correlation id");
                 }
                 if (!(message instanceof ObjectMessage)) throw new IllegalArgumentException("Expected a ObjectMessage response but got a " + message.getClass().getName());
-                ObjectMessage resMessage = (ObjectMessage) message;
-                Serializable object = resMessage.getObject();
+                final ObjectMessage resMessage = (ObjectMessage) message;
+                final Serializable object = resMessage.getObject();
                 if (object == null) throw new NullPointerException("object in ObjectMessage is null");
                 if (!(object instanceof Map)) {
-                    if (message instanceof ObjectMessage) throw new IllegalArgumentException("Expected a Map contained in the ObjectMessage response but got a " + object.getClass().getName());
+                    if (ObjectMessage.class.isInstance(message))
+                        throw new IllegalArgumentException("Expected a Map contained in the ObjectMessage response but got a " + object.getClass().getName());
                 }
-                Map response = (Map) object;
+                final Map response = (Map) object;
 
                 // process results
-                boolean exception = response.containsKey("exception");
-                Object returnValue = response.get("return");
+                final boolean exception = response.containsKey("exception");
+                final Object returnValue = response.get("return");
                 if (exception) {
                     throw (Throwable) returnValue;
                 }
                 return returnValue;
             } finally {
                 MdbUtil.close(consumer);
+                MdbUtil.close(tempSession);
             }
         }
     }
diff --git a/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/MdbUtil.java b/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/MdbUtil.java
index 0e0a7e5..081771a 100644
--- a/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/MdbUtil.java
+++ b/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/MdbUtil.java
@@ -17,19 +17,19 @@
  */
 package org.apache.openejb.test.mdb;
 
-import javax.jms.MessageProducer;
-import javax.jms.JMSException;
-import javax.jms.MessageConsumer;
-import javax.jms.Session;
 import javax.jms.Connection;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Session;
 import java.lang.reflect.Method;
 
 public class MdbUtil {
-    public static String getSignature(Method method){
-        StringBuilder builder = new StringBuilder();
+
+    public static String getSignature(final Method method) {
+        final StringBuilder builder = new StringBuilder();
         builder.append(method.getName()).append("(");
         boolean first = true;
-        for (Class<?> type : method.getParameterTypes()) {
+        for (final Class<?> type : method.getParameterTypes()) {
             if (!first) {
                 builder.append(",");
             }
@@ -40,38 +40,49 @@
         return builder.toString();
     }
 
-    public static void close(MessageProducer closeable) {
+    public static void close(final MessageProducer closeable) {
         if (closeable != null) {
             try {
                 closeable.close();
-            } catch (JMSException e) {
+            } catch (Throwable e) {
+                //Ignore
             }
         }
     }
 
-    public static void close(MessageConsumer closeable) {
+    public static void close(final MessageConsumer closeable) {
         if (closeable != null) {
             try {
                 closeable.close();
-            } catch (JMSException e) {
+            } catch (Throwable e) {
+                //Ignore
             }
         }
     }
 
-    public static void close(Session closeable) {
+    public static void close(final Session closeable) {
         if (closeable != null) {
             try {
                 closeable.close();
-            } catch (JMSException e) {
+            } catch (Throwable e) {
+                //Ignore
             }
         }
     }
 
-    public static void close(Connection closeable) {
+    public static void close(final Connection closeable) {
         if (closeable != null) {
+
+            try {
+                closeable.stop();
+            } catch (Throwable e) {
+                //Ignore
+            }
+
             try {
                 closeable.close();
-            } catch (JMSException e) {
+            } catch (Throwable e) {
+                //Ignore
             }
         }
     }
diff --git a/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/SetterInjectionMdbBean.java b/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/SetterInjectionMdbBean.java
index 87a5c04..e5823ab 100644
--- a/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/SetterInjectionMdbBean.java
+++ b/itests/openejb-itests-beans/src/main/java/org/apache/openejb/test/mdb/SetterInjectionMdbBean.java
@@ -17,7 +17,17 @@
  */
 package org.apache.openejb.test.mdb;
 
-import javax.annotation.PreDestroy;
+import junit.framework.Assert;
+import junit.framework.AssertionFailedError;
+import org.apache.openejb.test.TestFailureException;
+import org.apache.openejb.test.entity.bmp.BasicBmpHome;
+import org.apache.openejb.test.stateful.BasicStatefulBusinessLocal;
+import org.apache.openejb.test.stateful.BasicStatefulBusinessRemote;
+import org.apache.openejb.test.stateful.BasicStatefulHome;
+import org.apache.openejb.test.stateless.BasicStatelessBusinessLocal;
+import org.apache.openejb.test.stateless.BasicStatelessBusinessRemote;
+import org.apache.openejb.test.stateless.BasicStatelessHome;
+
 import javax.ejb.CreateException;
 import javax.ejb.EJBException;
 import javax.ejb.MessageDrivenBean;
@@ -36,17 +46,6 @@
 import javax.persistence.EntityManagerFactory;
 import javax.sql.DataSource;
 
-import junit.framework.Assert;
-import junit.framework.AssertionFailedError;
-import org.apache.openejb.test.TestFailureException;
-import org.apache.openejb.test.entity.bmp.BasicBmpHome;
-import org.apache.openejb.test.stateful.BasicStatefulBusinessLocal;
-import org.apache.openejb.test.stateful.BasicStatefulBusinessRemote;
-import org.apache.openejb.test.stateful.BasicStatefulHome;
-import org.apache.openejb.test.stateless.BasicStatelessBusinessLocal;
-import org.apache.openejb.test.stateless.BasicStatelessBusinessRemote;
-import org.apache.openejb.test.stateless.BasicStatelessHome;
-
 public class SetterInjectionMdbBean implements EncMdbObject, MessageDrivenBean, MessageListener {
     private MessageDrivenContext ejbContextField;
     private BasicBmpHome bmpHomeField;
@@ -77,28 +76,25 @@
     private MessageDrivenContext mdbContext = null;
     private MdbInvoker mdbInvoker;
 
-    public void setMessageDrivenContext(MessageDrivenContext ctx) throws EJBException {
+    @Override
+    public void setMessageDrivenContext(final MessageDrivenContext ctx) throws EJBException {
         this.mdbContext = ctx;
         try {
-            ConnectionFactory connectionFactory = (ConnectionFactory) new InitialContext().lookup("java:comp/env/jms");
+            final ConnectionFactory connectionFactory = (ConnectionFactory) new InitialContext().lookup("java:comp/env/jms");
             mdbInvoker = new MdbInvoker(connectionFactory, this);
         } catch (Exception e) {
             throw new EJBException(e);
         }
     }
 
-    public void onMessage(Message message) {
+    @Override
+    public void onMessage(final Message message) {
         try {
 //            System.out.println("\n" +
 //                    "***************************************\n" +
 //                    "Got message: " + message + "\n" +
 //                    "***************************************\n\n");
-            try {
-                message.acknowledge();
-            } catch (JMSException e) {
-                e.printStackTrace();
-            }
-            mdbInvoker.onMessage(message);
+             mdbInvoker.onMessage(message);
         } catch (Throwable e) {
             e.printStackTrace();
         }
@@ -108,7 +104,7 @@
         return statefulBusinessLocalField;
     }
 
-    public void setStatefulBusinessLocal(BasicStatefulBusinessLocal statefulBusinessLocal) {
+    public void setStatefulBusinessLocal(final BasicStatefulBusinessLocal statefulBusinessLocal) {
         this.statefulBusinessLocalField = statefulBusinessLocal;
     }
 
@@ -116,7 +112,7 @@
         return statefulBusinessRemoteField;
     }
 
-    public void setStatefulBusinessRemote(BasicStatefulBusinessRemote statefulBusinessRemote) {
+    public void setStatefulBusinessRemote(final BasicStatefulBusinessRemote statefulBusinessRemote) {
         this.statefulBusinessRemoteField = statefulBusinessRemote;
     }
 
@@ -124,7 +120,7 @@
         return statelessBusinessLocalField;
     }
 
-    public void setStatelessBusinessLocal(BasicStatelessBusinessLocal statelessBusinessLocal) {
+    public void setStatelessBusinessLocal(final BasicStatelessBusinessLocal statelessBusinessLocal) {
         this.statelessBusinessLocalField = statelessBusinessLocal;
     }
 
@@ -132,7 +128,7 @@
         return statelessBusinessRemoteField;
     }
 
-    public void setStatelessBusinessRemote(BasicStatelessBusinessRemote statelessBusinessRemote) {
+    public void setStatelessBusinessRemote(final BasicStatelessBusinessRemote statelessBusinessRemote) {
         this.statelessBusinessRemoteField = statelessBusinessRemote;
     }
 
@@ -140,7 +136,7 @@
         return bmpHomeField;
     }
 
-    public void setBmpHome(BasicBmpHome bmpHome) {
+    public void setBmpHome(final BasicBmpHome bmpHome) {
         this.bmpHomeField = bmpHome;
     }
 
@@ -148,7 +144,7 @@
         return boooleanField;
     }
 
-    public void setBooolean(Boolean booolean) {
+    public void setBooolean(final Boolean booolean) {
         this.boooleanField = booolean;
     }
 
@@ -156,7 +152,7 @@
         return byyteField;
     }
 
-    public void setByyte(Byte byyte) {
+    public void setByyte(final Byte byyte) {
         this.byyteField = byyte;
     }
 
@@ -164,7 +160,7 @@
         return chaaracterField;
     }
 
-    public void setChaaracter(Character chaaracter) {
+    public void setChaaracter(final Character chaaracter) {
         this.chaaracterField = chaaracter;
     }
 
@@ -172,7 +168,7 @@
         return daataSourceField;
     }
 
-    public void setDaataSource(DataSource daataSource) {
+    public void setDaataSource(final DataSource daataSource) {
         this.daataSourceField = daataSource;
     }
 
@@ -180,7 +176,7 @@
         return coonnectionFactory;
     }
 
-    public void setCoonnectionFactory(ConnectionFactory coonnectionFactory) {
+    public void setCoonnectionFactory(final ConnectionFactory coonnectionFactory) {
         this.coonnectionFactory = coonnectionFactory;
     }
 
@@ -188,7 +184,7 @@
         return queueCoonnectionFactory;
     }
 
-    public void setQueueCoonnectionFactory(QueueConnectionFactory queueCoonnectionFactory) {
+    public void setQueueCoonnectionFactory(final QueueConnectionFactory queueCoonnectionFactory) {
         this.queueCoonnectionFactory = queueCoonnectionFactory;
     }
 
@@ -196,7 +192,7 @@
         return topicCoonnectionFactory;
     }
 
-    public void setTopicCoonnectionFactory(TopicConnectionFactory topicCoonnectionFactory) {
+    public void setTopicCoonnectionFactory(final TopicConnectionFactory topicCoonnectionFactory) {
         this.topicCoonnectionFactory = topicCoonnectionFactory;
     }
 
@@ -204,7 +200,7 @@
         return dooubleField;
     }
 
-    public void setDoouble(Double doouble) {
+    public void setDoouble(final Double doouble) {
         this.dooubleField = doouble;
     }
 
@@ -212,7 +208,7 @@
         return eemField;
     }
 
-    public void setEem(EntityManager eem) {
+    public void setEem(final EntityManager eem) {
         this.eemField = eem;
     }
 
@@ -220,7 +216,7 @@
         return ejbContextField;
     }
 
-    public void setEjbContext(MessageDrivenContext ejbContext) {
+    public void setEjbContext(final MessageDrivenContext ejbContext) {
         this.ejbContextField = ejbContext;
     }
 
@@ -228,7 +224,7 @@
         return emField;
     }
 
-    public void setEm(EntityManager em) {
+    public void setEm(final EntityManager em) {
         this.emField = em;
     }
 
@@ -236,7 +232,7 @@
         return emfField;
     }
 
-    public void setEmf(EntityManagerFactory emf) {
+    public void setEmf(final EntityManagerFactory emf) {
         this.emfField = emf;
     }
 
@@ -244,7 +240,7 @@
         return flooatField;
     }
 
-    public void setFlooat(Float flooat) {
+    public void setFlooat(final Float flooat) {
         this.flooatField = flooat;
     }
 
@@ -252,7 +248,7 @@
         return inteegerField;
     }
 
-    public void setInteeger(Integer inteeger) {
+    public void setInteeger(final Integer inteeger) {
         this.inteegerField = inteeger;
     }
 
@@ -260,7 +256,7 @@
         return loongField;
     }
 
-    public void setLoong(Long loong) {
+    public void setLoong(final Long loong) {
         this.loongField = loong;
     }
 
@@ -268,7 +264,7 @@
         return pemField;
     }
 
-    public void setPem(EntityManager pem) {
+    public void setPem(final EntityManager pem) {
         this.pemField = pem;
     }
 
@@ -276,7 +272,7 @@
         return shoortField;
     }
 
-    public void setShoort(Short shoort) {
+    public void setShoort(final Short shoort) {
         this.shoortField = shoort;
     }
 
@@ -284,7 +280,7 @@
         return statefulHomeField;
     }
 
-    public void setStatefulHome(BasicStatefulHome statefulHome) {
+    public void setStatefulHome(final BasicStatefulHome statefulHome) {
         this.statefulHomeField = statefulHome;
     }
 
@@ -292,7 +288,7 @@
         return statelessHomeField;
     }
 
-    public void setStatelessHome(BasicStatelessHome statelessHome) {
+    public void setStatelessHome(final BasicStatelessHome statelessHome) {
         this.statelessHomeField = statelessHome;
     }
 
@@ -300,13 +296,14 @@
         return striingField;
     }
 
-    public void setStriing(String striing) {
+    public void setStriing(final String striing) {
         this.striingField = striing;
     }
 
     public void ejbCreate() throws CreateException {
     }
 
+    @Override
     public void lookupEntityBean() throws TestFailureException {
         try {
             Assert.assertNotNull("The EJBObject is null", bmpHomeField);
@@ -315,6 +312,7 @@
         }
     }
 
+    @Override
     public void lookupStatefulBean() throws TestFailureException {
         try {
             Assert.assertNotNull("The EJBObject is null", statefulHomeField);
@@ -323,6 +321,7 @@
         }
     }
 
+    @Override
     public void lookupStatelessBean() throws TestFailureException {
         try {
             Assert.assertNotNull("The EJBObject is null", statelessHomeField);
@@ -331,42 +330,47 @@
         }
     }
 
-    public void lookupStatelessBusinessLocal() throws TestFailureException{
-        try{
-            Assert.assertNotNull("The EJB BusinessLocal is null", statelessBusinessLocalField );
-        } catch (AssertionFailedError afe){
+    @Override
+    public void lookupStatelessBusinessLocal() throws TestFailureException {
+        try {
+            Assert.assertNotNull("The EJB BusinessLocal is null", statelessBusinessLocalField);
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
 
-    public void lookupStatelessBusinessRemote() throws TestFailureException{
-        try{
-            Assert.assertNotNull("The EJB BusinessRemote is null", statelessBusinessRemoteField );
-        } catch (AssertionFailedError afe){
+    @Override
+    public void lookupStatelessBusinessRemote() throws TestFailureException {
+        try {
+            Assert.assertNotNull("The EJB BusinessRemote is null", statelessBusinessRemoteField);
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
 
-    public void lookupStatefulBusinessLocal() throws TestFailureException{
-        try{
-            Assert.assertNotNull("The EJB BusinessLocal is null", statefulBusinessLocalField );
-        } catch (AssertionFailedError afe){
+    @Override
+    public void lookupStatefulBusinessLocal() throws TestFailureException {
+        try {
+            Assert.assertNotNull("The EJB BusinessLocal is null", statefulBusinessLocalField);
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
 
-    public void lookupStatefulBusinessRemote() throws TestFailureException{
-        try{
-            Assert.assertNotNull("The EJB BusinessRemote is null", statefulBusinessRemoteField );
-        } catch (AssertionFailedError afe){
+    @Override
+    public void lookupStatefulBusinessRemote() throws TestFailureException {
+        try {
+            Assert.assertNotNull("The EJB BusinessRemote is null", statefulBusinessRemoteField);
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
 
 
+    @Override
     public void lookupStringEntry() throws TestFailureException {
         try {
-            String expected = new String("1");
+            final String expected = "1";
             Assert.assertNotNull("The String looked up is null", striingField);
             Assert.assertEquals(expected, striingField);
         } catch (AssertionFailedError afe) {
@@ -374,9 +378,10 @@
         }
     }
 
+    @Override
     public void lookupDoubleEntry() throws TestFailureException {
         try {
-            Double expected = new Double(1.0D);
+            final Double expected = 1.0D;
 
             Assert.assertNotNull("The Double looked up is null", dooubleField);
             Assert.assertEquals(expected, dooubleField);
@@ -386,9 +391,10 @@
         }
     }
 
+    @Override
     public void lookupLongEntry() throws TestFailureException {
         try {
-            Long expected = new Long(1L);
+            final Long expected = 1L;
 
             Assert.assertNotNull("The Long looked up is null", loongField);
             Assert.assertEquals(expected, loongField);
@@ -397,9 +403,10 @@
         }
     }
 
+    @Override
     public void lookupFloatEntry() throws TestFailureException {
         try {
-            Float expected = new Float(1.0F);
+            final Float expected = 1.0F;
 
             Assert.assertNotNull("The Float looked up is null", flooatField);
             Assert.assertEquals(expected, flooatField);
@@ -408,9 +415,10 @@
         }
     }
 
+    @Override
     public void lookupIntegerEntry() throws TestFailureException {
         try {
-            Integer expected = new Integer(1);
+            final Integer expected = 1;
 
             Assert.assertNotNull("The Integer looked up is null", inteegerField);
             Assert.assertEquals(expected, inteegerField);
@@ -420,9 +428,10 @@
         }
     }
 
+    @Override
     public void lookupShortEntry() throws TestFailureException {
         try {
-            Short expected = new Short((short) 1);
+            final Short expected = (short) 1;
 
             Assert.assertNotNull("The Short looked up is null", shoortField);
             Assert.assertEquals(expected, shoortField);
@@ -431,9 +440,10 @@
         }
     }
 
+    @Override
     public void lookupBooleanEntry() throws TestFailureException {
         try {
-            Boolean expected = new Boolean(true);
+            final Boolean expected = true;
 
             Assert.assertNotNull("The Boolean looked up is null", boooleanField);
             Assert.assertEquals(expected, boooleanField);
@@ -442,9 +452,10 @@
         }
     }
 
+    @Override
     public void lookupByteEntry() throws TestFailureException {
         try {
-            Byte expected = new Byte((byte) 1);
+            final Byte expected = (byte) 1;
 
             Assert.assertNotNull("The Byte looked up is null", byyteField);
             Assert.assertEquals(expected, byyteField);
@@ -453,9 +464,10 @@
         }
     }
 
+    @Override
     public void lookupCharacterEntry() throws TestFailureException {
         try {
-            Character expected = new Character('D');
+            final Character expected = 'D';
 
             Assert.assertNotNull("The Character looked up is null", chaaracterField);
             Assert.assertEquals(expected, chaaracterField);
@@ -464,6 +476,7 @@
         }
     }
 
+    @Override
     public void lookupResource() throws TestFailureException {
         try {
             Assert.assertNotNull("The DataSource is null", daataSourceField);
@@ -472,31 +485,33 @@
         }
     }
 
-    public void lookupJMSConnectionFactory() throws TestFailureException{
-        try{
-            try{
+    @Override
+    public void lookupJMSConnectionFactory() throws TestFailureException {
+        try {
+            try {
                 testJmsConnection(coonnectionFactory.createConnection());
                 testJmsConnection(queueCoonnectionFactory.createConnection());
                 testJmsConnection(topicCoonnectionFactory.createConnection());
-            } catch (Exception e){
+            } catch (Exception e) {
                 e.printStackTrace();
-                Assert.fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
+                Assert.fail("Received Exception " + e.getClass() + " : " + e.getMessage());
             }
-        } catch (AssertionFailedError afe){
+        } catch (AssertionFailedError afe) {
             throw new TestFailureException(afe);
         }
     }
 
-    private void testJmsConnection(javax.jms.Connection connection) throws JMSException {
-        Session session = connection.createSession(false, Session.DUPS_OK_ACKNOWLEDGE);
-        Topic topic = session.createTopic("test");
-        MessageProducer producer = session.createProducer(topic);
+    private void testJmsConnection(final javax.jms.Connection connection) throws JMSException {
+        final Session session = connection.createSession(false, Session.DUPS_OK_ACKNOWLEDGE);
+        final Topic topic = session.createTopic("test");
+        final MessageProducer producer = session.createProducer(topic);
         producer.send(session.createMessage());
         producer.close();
         session.close();
         connection.close();
     }
 
+    @Override
     public void lookupPersistenceUnit() throws TestFailureException {
         try {
             Assert.assertNotNull("The EntityManagerFactory is null", emfField);
@@ -505,6 +520,7 @@
         }
     }
 
+    @Override
     public void lookupPersistenceContext() throws TestFailureException {
         try {
             Assert.assertNotNull("The EntityManager is null", emField);
@@ -520,6 +536,7 @@
         }
     }
 
+    @Override
     public void lookupMessageDrivenContext() throws TestFailureException {
         try {
             Assert.assertNotNull("The MessageDrivenContext is null", mdbContext);
@@ -529,6 +546,10 @@
 
     }
 
+    @Override
     public void ejbRemove() throws EJBException {
+        if (null != mdbInvoker) {
+            mdbInvoker.destroy();
+        }
     }
 }
diff --git a/itests/openejb-itests-client/pom.xml b/itests/openejb-itests-client/pom.xml
index 483938a..a2a28cf 100644
--- a/itests/openejb-itests-client/pom.xml
+++ b/itests/openejb-itests-client/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>itests</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-itests-client</artifactId>
diff --git a/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/ActiveMqLocalTestJms.java b/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/ActiveMqLocalTestJms.java
index 4cac646..ce0e6fa 100644
--- a/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/ActiveMqLocalTestJms.java
+++ b/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/ActiveMqLocalTestJms.java
@@ -25,9 +25,12 @@
  * @version $Rev: 637368 $ $Date: 2008-03-15 00:04:30 -0700 (Sat, 15 Mar 2008) $
  */
 public class ActiveMqLocalTestJms implements TestJms {
-    public void init(Properties props) {
+
+    @Override
+    public void init(final Properties props) {
     }
 
+    @Override
     public ConnectionFactory getConnectionFactory() {
         return new ActiveMQConnectionFactory("vm://localhost?async=true");
     }
diff --git a/itests/openejb-itests-interceptor-beans/pom.xml b/itests/openejb-itests-interceptor-beans/pom.xml
index 3271848..942f64e 100644
--- a/itests/openejb-itests-interceptor-beans/pom.xml
+++ b/itests/openejb-itests-interceptor-beans/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.openejb</groupId>
     <artifactId>itests</artifactId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
 
   <artifactId>openejb-itests-interceptor-beans</artifactId>
diff --git a/itests/openejb-itests-servlets/pom.xml b/itests/openejb-itests-servlets/pom.xml
index 8d4332d..39d48cb 100644
--- a/itests/openejb-itests-servlets/pom.xml
+++ b/itests/openejb-itests-servlets/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>itests</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-itests-servlets</artifactId>
diff --git a/itests/openejb-itests-web/pom.xml b/itests/openejb-itests-web/pom.xml
index f030f36..a8ce85e 100644
--- a/itests/openejb-itests-web/pom.xml
+++ b/itests/openejb-itests-web/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>itests</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-itests-web</artifactId>
diff --git a/itests/pom.xml b/itests/pom.xml
index ae784e7..8c04c19 100644
--- a/itests/pom.xml
+++ b/itests/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>openejb</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>itests</artifactId>
diff --git a/maven/dd-maven-plugin/pom.xml b/maven/dd-maven-plugin/pom.xml
deleted file mode 100644
index dcdc5c3..0000000
--- a/maven/dd-maven-plugin/pom.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <parent>
-    <artifactId>maven</artifactId>
-    <groupId>org.apache.openejb.maven</groupId>
-    <version>1.0.1-SNAPSHOT</version>
-  </parent>
-  <modelVersion>4.0.0</modelVersion>
-
-  <artifactId>dd-maven-plugin</artifactId>
-  <packaging>maven-plugin</packaging>
-  <name>OpenEJB :: Maven Plugins :: DD Maven Plugin</name>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-plugin-api</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.openejb</groupId>
-      <artifactId>openejb-core</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>maven-util</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-  </dependencies>
-
-  <properties>
-    <maven-plugin.prefix>dd</maven-plugin.prefix>
-  </properties>
-</project>
diff --git a/maven/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/MergeDDForWebappMojo.java b/maven/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/MergeDDForWebappMojo.java
deleted file mode 100644
index ef8d0f3..0000000
--- a/maven/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/MergeDDForWebappMojo.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/**
- * 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.openejb.maven.plugin.dd;
-
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugin.logging.Log;
-import org.apache.maven.project.MavenProject;
-import org.apache.openejb.config.NewLoaderLogic;
-import org.apache.openejb.maven.util.MavenLogStreamFactory;
-import org.apache.xbean.finder.AbstractFinder;
-import org.apache.xbean.finder.ClassFinder;
-import org.apache.xbean.finder.ResourceFinder;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @goal merge
- * @phase compile
- * @requiresDependencyResolution runtime
- */
-public class MergeDDForWebappMojo extends AbstractMojo {
-    private static final String[] MANAGED_DD = {
-            "ejb-jar.xml", "openejb-jar.xml",
-            "env-entries.properties",
-            "validation.xml"
-        };
-
-    /**
-     * @parameter expression="${project}"
-     * @required
-     * @readonly
-     */
-    private MavenProject project;
-
-    /**
-     * @parameter expression="${project.build.sourceDirectory}/main/webapp/WEB-INF"
-     * @required
-     * @readonly
-     */
-    private File webInfSrc;
-
-    /**
-     * @parameter expression="${project.build.directory}/${project.build.finalName}/WEB-INF"
-     * @required
-     * @readonly
-     */
-    private File webInf;
-
-    /**
-     * @parameter
-     */
-    private List<String> includes;
-
-    /**
-     * @parameter
-     */
-    private List<String> excludes;
-
-    @Override
-    public void execute() throws MojoExecutionException, MojoFailureException {
-        System.setProperty("openejb.log.factory", "org.apache.openejb.maven.util.MavenLogStreamFactory");
-        MavenLogStreamFactory.setLogger(getLog());
-
-        initIncludeExclude();
-        final Map<String, Merger<?>> mergers;
-        try {
-            mergers = initMerger();
-        } catch (Exception e) {
-            getLog().error("can't find mergers", e);
-            return;
-        }
-
-        getLog().info("looking for descriptors...");
-        final List<Artifact> artifacts = getDependencies();
-
-        final ResourceFinder webInfFinder;
-        try {
-            webInfFinder = new ResourceFinder(webInfSrc.toURI().toURL());
-        } catch (MalformedURLException e) {
-            throw new MojoFailureException("can't create a finder for webinf", e);
-        }
-
-        final Map<Artifact, ResourceFinder> finders = finders(artifacts);
-        for (String dd : MANAGED_DD) {
-            if (!mergers.containsKey(dd)) {
-                getLog().warn("ignoring " + dd + " because no merger found");
-            }
-
-            int ddCount = 0;
-            Object reference;
-            final Merger<Object> merger = (Merger<Object>) mergers.get(dd);
-            try {
-                final URL ddUrl = webInfFinder.find(dd);
-                if (ddUrl != null) {
-                    reference = merger.read(ddUrl);
-                    ddCount++;
-                } else {
-                    reference = merger.createEmpty();
-                }
-            } catch (IOException e) {
-                reference = merger.createEmpty();
-            }
-
-            for (Artifact artifact : artifacts) {
-                try {
-                    final URL otherDD = finders.get(artifact).find("META-INF/" + dd);
-                    if (otherDD != null) {
-                        merger.merge(reference, merger.read(otherDD));
-                        ddCount++;
-                    }
-                } catch (IOException e) {
-                    // ignore since it means the resource was not found
-                }
-            }
-
-            if (ddCount > 0) {
-                if (!webInf.exists() && !webInf.mkdirs()) {
-                    getLog().error("can't create " + webInf.getPath());
-                }
-                final File dump = new File(webInf, dd);
-                try {
-                    merger.dump(dump, reference);
-                    getLog().info(dd + " merged on " + dump.getPath());
-                } catch (Exception e) {
-                    getLog().error("can't save " + dd + " in " + dump.getPath());
-                }
-            } else {
-                getLog().debug("no " + dd + " found, this descriptor will be ignored");
-            }
-        }
-    }
-
-    private Map<String, Merger<?>> initMerger() throws Exception {
-        final Map<String, Merger<?>> mergers = new HashMap<String, Merger<?>>();
-        final ClassLoader cl = new URLClassLoader(new URL[] { getClass().getProtectionDomain().getCodeSource().getLocation() }, ClassLoader.getSystemClassLoader());
-        final AbstractFinder finder = new ClassFinder(cl, true).link();
-        final List<Class> foundMergers = finder.findSubclasses((Class) cl.loadClass(Merger.class.getName()));
-        
-        for (Class<? extends Merger> m : foundMergers) {
-            try {
-                // reload the class with the current classloader to avoid to miss some dependencies
-                // excluded to scan faster
-                final Merger<?> instance = (Merger<?>) Thread.currentThread().getContextClassLoader().loadClass(m.getName())
-                                                .getConstructor(Log.class).newInstance(getLog());
-                mergers.put(instance.descriptorName(), instance);
-            } catch (Exception e) {
-                getLog().warn("can't instantiate " + m.getName() + ", does it provide a constructor with a maven logger?");
-            }
-        }
-        return mergers;
-    }
-
-    private Map<Artifact, ResourceFinder> finders(List<Artifact> artifacts) {
-        final Map<Artifact, ResourceFinder> map = new HashMap<Artifact, ResourceFinder>(artifacts.size());
-        for (Artifact artifact : artifacts) {
-            try {
-                map.put(artifact, new ResourceFinder(artifact.getFile().toURI().toURL()));
-            } catch (MalformedURLException e) {
-                getLog().warn("can't manage " + artifact);
-            }
-        }
-        return map;  //To change body of created methods use File | Settings | File Templates.
-    }
-
-    public List<Artifact> getDependencies() {
-        final List<Artifact> dependencies = new ArrayList<Artifact>(project.getArtifacts());
-        final Iterator<Artifact> it = dependencies.iterator();
-        while (it.hasNext()) {
-            final Artifact artifact = it.next();
-            if (!keep(artifact.getArtifactId())) {
-                it.remove();
-            }
-        }
-        return dependencies;
-    }
-
-    private boolean keep(final String str) {
-        return matches(includes, str) && !matches(excludes, str);
-    }
-
-    private void initIncludeExclude() {
-        if (includes == null) {
-            includes = new ArrayList<String>();
-            includes.add("");
-        }
-        if (excludes == null) {
-            excludes = Arrays.asList(NewLoaderLogic.getExclusions());
-        }
-    }
-
-    private static boolean matches(final List<String> includes, final String artifact) {
-        for (String pattern : includes) {
-            if (artifact.startsWith(pattern)) {
-                return true;
-            }
-        }
-        return false;
-    }
-}
diff --git a/maven/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/Merger.java b/maven/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/Merger.java
deleted file mode 100644
index 19d08c1..0000000
--- a/maven/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/Merger.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * 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.openejb.maven.plugin.dd;
-
-import org.apache.maven.plugin.logging.Log;
-
-import java.io.File;
-import java.net.URL;
-
-public abstract class Merger<T> {
-    protected final Log log;
-
-    public Merger(final Log logger) {
-        log = logger;
-    }
-
-    public abstract T merge(T reference, T toMerge);
-    public abstract T createEmpty();
-    public abstract T read(URL url);
-    public abstract String descriptorName();
-    public abstract void dump(File dump, T object) throws Exception ;
-}
diff --git a/maven/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EjbJarMerger.java b/maven/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EjbJarMerger.java
deleted file mode 100644
index 5273174..0000000
--- a/maven/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EjbJarMerger.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/**
- * 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.openejb.maven.plugin.dd.merger;
-
-import org.apache.maven.plugin.logging.Log;
-import org.apache.openejb.jee.ApplicationException;
-import org.apache.openejb.jee.AssemblyDescriptor;
-import org.apache.openejb.jee.ContainerConcurrency;
-import org.apache.openejb.jee.ContainerTransaction;
-import org.apache.openejb.jee.EjbJar;
-import org.apache.openejb.jee.EnterpriseBean;
-import org.apache.openejb.jee.Interceptor;
-import org.apache.openejb.jee.InterceptorBinding;
-import org.apache.openejb.jee.JaxbJavaee;
-import org.apache.openejb.jee.MessageDestination;
-import org.apache.openejb.jee.MethodPermission;
-import org.apache.openejb.jee.SecurityRole;
-import org.apache.openejb.maven.plugin.dd.Merger;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.net.URL;
-
-public class EjbJarMerger extends Merger<EjbJar> {
-    public EjbJarMerger(final Log logger) {
-        super(logger);
-    }
-
-    @Override
-    public EjbJar merge(final EjbJar reference, final EjbJar toMerge) {
-        for (EnterpriseBean bean : toMerge.getEnterpriseBeans()) {
-            if (reference.getEnterpriseBeansByEjbName().containsKey(bean.getEjbName())) {
-                log.warn("bean " + bean.getEjbName() + " already defined");
-            } else {
-                reference.addEnterpriseBean(bean);
-            }
-        }
-
-        for (Interceptor interceptor : toMerge.getInterceptors()) {
-            if (reference.getInterceptor(interceptor.getInterceptorClass()) != null) {
-                log.warn("interceptor " + interceptor.getInterceptorClass() + " already defined");
-            } else {
-                reference.addInterceptor(interceptor);
-            }
-        }
-
-        final AssemblyDescriptor descriptor = toMerge.getAssemblyDescriptor();
-        mergeAssemblyDescriptor(reference.getAssemblyDescriptor(), descriptor);
-
-        return reference;
-    }
-
-    // TODO: merge it in a better way
-    private void mergeAssemblyDescriptor(final AssemblyDescriptor reference, final AssemblyDescriptor descriptor) {
-        for (SecurityRole role : descriptor.getSecurityRole()) {
-            boolean found = false;
-            for (SecurityRole refRole : reference.getSecurityRole()) {
-                if (refRole.getRoleName().equals(role.getRoleName())) {
-                    found = true;
-                    break;
-                }
-            }
-            if (found) {
-                log.warn("role " + role.getRoleName() + " already defined");
-            } else {
-                reference.getSecurityRole().add(role);
-            }
-        }
-
-        for (MethodPermission perm : descriptor.getMethodPermission()) {
-            boolean found = false;
-            for (MethodPermission refPerm : reference.getMethodPermission()) {
-                if (refPerm.getRoleName().equals(perm.getRoleName())) {
-                    found  = true;
-                    break;
-                }
-            }
-            if (found) {
-                log.warn("method permission " + perm.getId() + " already defined");
-            } else {
-                reference.getMethodPermission().add(perm);
-            }
-        }
-
-        for (ContainerTransaction tx : descriptor.getContainerTransaction()) {
-            reference.getContainerTransaction().add(tx);
-        }
-
-        for (ContainerConcurrency concurrency : descriptor.getContainerConcurrency()) {
-            reference.getContainerConcurrency().add(concurrency);
-        }
-
-        for (InterceptorBinding interceptorBinding : descriptor.getInterceptorBinding()) {
-            boolean found = false;
-            for (InterceptorBinding refInterceptorBinding : reference.getInterceptorBinding()) {
-                if (refInterceptorBinding.getEjbName().equals(interceptorBinding.getEjbName())) {
-                    for (String interceptor : interceptorBinding.getInterceptorClass()) {
-                        if (refInterceptorBinding.getInterceptorClass().contains(interceptor)) {
-                            found = true;
-                            break;
-                        }
-                    }
-                }
-            }
-            if (found) {
-                log.warn("interceptor binding " + interceptorBinding.getId() + " already defined");
-            } else {
-                reference.getInterceptorBinding().add(interceptorBinding);
-            }
-        }
-
-        for (MessageDestination destination : descriptor.getMessageDestination()) {
-            boolean found = false;
-            for (MessageDestination refDestination : reference.getMessageDestination()) {
-                if (refDestination.getMessageDestinationName().equals(destination.getMessageDestinationName())) { // is id the good test?
-                    found = true;
-                    break;
-                }
-            }
-            if (found) {
-                log.warn("message destination " + destination.getMessageDestinationName() + " already defined");
-            } else {
-                reference.getMessageDestination().add(destination);
-            }
-        }
-
-        for (ApplicationException exception : descriptor.getApplicationException()) {
-            if (reference.getApplicationExceptionMap().containsKey(exception.getKey())) {
-                log.warn("application exception " + exception.getKey() + " already defined");
-            } else {
-                reference.getApplicationException().add(exception);
-            }
-        }
-    }
-
-    @Override
-    public EjbJar createEmpty() {
-        return new EjbJar();
-    }
-
-    @Override
-    public EjbJar read(URL url) {
-        try {
-            return (EjbJar) JaxbJavaee.unmarshal(EjbJar.class, new BufferedInputStream(url.openStream()), false);
-        } catch (Exception e) {
-            return createEmpty();
-        }
-    }
-
-    @Override
-    public String descriptorName() {
-        return "ejb-jar.xml";
-    }
-
-    @Override
-    public void dump(final File dump, final EjbJar ejbJar) throws Exception {
-        final BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(dump));
-        try {
-            JaxbJavaee.marshal(EjbJar.class, ejbJar, stream);
-        } finally {
-            stream.close();
-        }
-    }
-}
diff --git a/maven/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EnvEntriesMerger.java b/maven/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EnvEntriesMerger.java
deleted file mode 100644
index 99e9a58..0000000
--- a/maven/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EnvEntriesMerger.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * 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.openejb.maven.plugin.dd.merger;
-
-import org.apache.maven.plugin.logging.Log;
-import org.apache.openejb.maven.plugin.dd.Merger;
-
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.Writer;
-import java.net.URL;
-import java.util.Properties;
-
-public class EnvEntriesMerger extends Merger<Properties> {
-    public EnvEntriesMerger(final Log logger) {
-        super(logger);
-    }
-
-    @Override
-    public Properties merge(final Properties reference, final Properties toMerge) {
-        for (Object key : toMerge.keySet()) {
-            if (reference.containsKey(key)) {
-                log.warn("property " + key + " found in multiple env-entries.properties, will be overriden");
-            }
-        }
-
-        reference.putAll(toMerge);
-        return reference;
-    }
-
-    @Override
-    public Properties createEmpty() {
-        return new Properties();
-    }
-
-    @Override
-    public Properties read(URL url) {
-        final Properties read = new Properties();
-        try {
-            read.load(new BufferedInputStream(url.openStream()));
-        } catch (IOException e) {
-            // ignored
-        }
-        return read;
-    }
-
-    @Override
-    public String descriptorName() {
-        return "env-entries.properties";
-    }
-
-    @Override
-    public void dump(final File dump, final Properties object) throws Exception {
-        final Writer writer = new FileWriter(dump);
-        try {
-            object.store(writer, "merged env-entries.properties");
-        } finally {
-            writer.close();
-        }
-    }
-}
diff --git a/maven/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/OpenEJBJarMerger.java b/maven/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/OpenEJBJarMerger.java
deleted file mode 100644
index b8d2456..0000000
--- a/maven/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/OpenEJBJarMerger.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- * 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.openejb.maven.plugin.dd.merger;
-
-import org.apache.maven.plugin.logging.Log;
-import org.apache.openejb.jee.oejb3.EjbDeployment;
-import org.apache.openejb.jee.oejb3.JaxbOpenejbJar3;
-import org.apache.openejb.jee.oejb3.OpenejbJar;
-import org.apache.openejb.maven.plugin.dd.Merger;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.net.URL;
-
-public class OpenEJBJarMerger extends Merger<OpenejbJar> {
-    public OpenEJBJarMerger(final Log logger) {
-        super(logger);
-    }
-
-    @Override
-    public OpenejbJar merge(OpenejbJar reference, OpenejbJar toMerge) {
-        new EnvEntriesMerger(log).merge(reference.getProperties(), toMerge.getProperties());
-
-        for (EjbDeployment deployment : toMerge.getEjbDeployment()) {
-            if (reference.getDeploymentsByEjbName().containsKey(deployment.getEjbName())) {
-                log.warn("ejb deployement " + deployment.getEjbName() + " already present");
-            } else {
-                reference.addEjbDeployment(deployment);
-            }
-        }
-
-        return reference;
-    }
-
-    @Override
-    public OpenejbJar createEmpty() {
-        return new OpenejbJar();
-    }
-
-    @Override
-    public OpenejbJar read(URL url) {
-        try {
-            return JaxbOpenejbJar3.unmarshal(OpenejbJar.class, new BufferedInputStream(url.openStream()));
-        } catch (Exception e) {
-            return createEmpty();
-        }
-    }
-
-    @Override
-    public String descriptorName() {
-        return "openejb-jar.xml";
-    }
-
-    @Override
-    public void dump(File dump, OpenejbJar object) throws Exception {
-        final BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(dump));
-        try {
-            JaxbOpenejbJar3.marshal(OpenejbJar.class, object, stream);
-        } finally {
-            stream.close();
-        }
-    }
-}
diff --git a/maven/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/ValidationMerger.java b/maven/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/ValidationMerger.java
deleted file mode 100644
index 233e7c1..0000000
--- a/maven/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/ValidationMerger.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * 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.openejb.maven.plugin.dd.merger;
-
-import org.apache.maven.plugin.logging.Log;
-import org.apache.openejb.config.sys.JaxbOpenejb;
-import org.apache.openejb.jee.bval.PropertyType;
-import org.apache.openejb.jee.bval.ValidationConfigType;
-import org.apache.openejb.maven.plugin.dd.Merger;
-
-import javax.xml.bind.JAXBElement;
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.net.URL;
-
-public class ValidationMerger extends Merger<ValidationConfigType> {
-    public ValidationMerger(final Log logger) {
-        super(logger);
-    }
-
-    @Override
-    public ValidationConfigType merge(final ValidationConfigType reference, final ValidationConfigType toMerge) {
-        for (PropertyType property : toMerge.getProperty()) {
-            boolean found = false;
-            for (PropertyType refProperty : reference.getProperty()) {
-                if (refProperty.getName().contains(property.getName())) {
-                    found = true;
-                    break;
-                }
-            }
-            if (found) {
-                log.warn("property " + property.getName() + " already present");
-            } else {
-                reference.getProperty().add(property);
-            }
-        }
-
-        for (JAXBElement<String> elt : toMerge.getConstraintMapping()) {
-            reference.getConstraintMapping().add(elt);
-        }
-
-        return reference;
-    }
-
-    @Override
-    public ValidationConfigType createEmpty() {
-        return new ValidationConfigType();
-    }
-
-    @Override
-    public ValidationConfigType read(URL url) {
-        try {
-            return JaxbOpenejb.unmarshal(ValidationConfigType.class, new BufferedInputStream(url.openStream()));
-        } catch (Exception e) {
-            return createEmpty();
-        }
-    }
-
-    @Override
-    public String descriptorName() {
-        return "validation.xml";
-    }
-
-    @Override
-    public void dump(File dump, ValidationConfigType object) throws Exception {
-        final BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(dump));
-        try {
-            JaxbOpenejb.marshal(ValidationConfigType.class, object, stream);
-        } finally {
-            stream.close();
-        }
-    }
-}
diff --git a/maven/maven-util/pom.xml b/maven/maven-util/pom.xml
index ff1e72c..35d1849 100644
--- a/maven/maven-util/pom.xml
+++ b/maven/maven-util/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>maven</artifactId>
     <groupId>org.apache.openejb.maven</groupId>
-    <version>1.0.1-SNAPSHOT</version>
+    <version>1.0.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/maven/openejb-embedded-maven-plugin/pom.xml b/maven/openejb-embedded-maven-plugin/pom.xml
index 4c29976..ca28585 100644
--- a/maven/openejb-embedded-maven-plugin/pom.xml
+++ b/maven/openejb-embedded-maven-plugin/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>maven</artifactId>
     <groupId>org.apache.openejb.maven</groupId>
-    <version>1.0.1-SNAPSHOT</version>
+    <version>1.0.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/maven/pom.xml b/maven/pom.xml
index dfc5aed..192c60e 100644
--- a/maven/pom.xml
+++ b/maven/pom.xml
@@ -15,7 +15,6 @@
     See the License for the specific language governing permissions and
     limitations under the License.
   -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
@@ -24,11 +23,11 @@
   <parent>
     <artifactId>openejb</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
 
   <groupId>org.apache.openejb.maven</groupId>
-  <version>1.0.1-SNAPSHOT</version>
+  <version>1.0.1</version>
   <artifactId>maven</artifactId>
   <packaging>pom</packaging>
   <name>OpenEJB :: Maven Plugins</name>
@@ -36,11 +35,9 @@
   <modules>
     <module>tomee-maven-plugin</module>
     <module>tomee-embedded-maven-plugin</module>
-    <module>dd-maven-plugin</module>
     <module>openejb-embedded-maven-plugin</module>
     <module>maven-util</module>
-    <module>spi-helper-maven-plugin</module>
-    <module>spi-helper-jee6-profile</module>
+    <module>tomee-webapp-archetype</module>
   </modules>
 
   <dependencyManagement>
diff --git a/maven/spi-helper-jee6-profile/pom.xml b/maven/spi-helper-jee6-profile/pom.xml
deleted file mode 100644
index 51fb107..0000000
--- a/maven/spi-helper-jee6-profile/pom.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <parent>
-    <artifactId>maven</artifactId>
-    <groupId>org.apache.openejb.maven</groupId>
-    <version>1.0.1-SNAPSHOT</version>
-  </parent>
-  <modelVersion>4.0.0</modelVersion>
-
-  <artifactId>spi-helper-jee6-profile</artifactId>
-  <name>OpenEJB :: Maven Plugins :: JEE6 profile</name>
-</project>
diff --git a/maven/spi-helper-jee6-profile/src/main/resources/org/apache/xbean/profile.properties b/maven/spi-helper-jee6-profile/src/main/resources/org/apache/xbean/profile.properties
deleted file mode 100644
index f77669c..0000000
--- a/maven/spi-helper-jee6-profile/src/main/resources/org/apache/xbean/profile.properties
+++ /dev/null
@@ -1,71 +0,0 @@
-#
-# 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.
-#
-
-name = jee6
-
-annotations = javax.annotation.ManagedBean,\
-              javax.annotation.PostConstruct,\
-              javax.annotation.PreDestroy,\
-              javax.annotation.Resource,\
-              javax.annotation.Resources,\
-              javax.annotation.security.DenyAll,\
-              javax.annotation.security.PermitAll,\
-              javax.annotation.security.RolesAllowed,\
-              javax.annotation.sql.DataSourceDefinition,\
-              javax.ejb.AfterBegin,\
-              javax.ejb.AfterCompletion,\
-              javax.ejb.ApplicationException,\
-              javax.ejb.Asynchronous,\
-              javax.ejb.BeforeCompletion,\
-              javax.ejb.ConcurrencyManagement,\
-              javax.ejb.DependsOn,\
-              javax.ejb.EJB,\
-              javax.ejb.EJBs,\
-              javax.ejb.Init,\
-              javax.ejb.LocalBean,\
-              javax.ejb.LocalHome,\
-              javax.ejb.MessageDriven,\
-              javax.ejb.PostActivate,\
-              javax.ejb.PrePassivate,\
-              javax.ejb.RemoteHome,\
-              javax.ejb.Remove,\
-              javax.ejb.Schedule,\
-              javax.ejb.Schedules,\
-              javax.ejb.Singleton,\
-              javax.ejb.Stateful,\
-              javax.ejb.Stateless,\
-              javax.ejb.Timeout,\
-              javax.enterprise.inject.Specializes,\
-              javax.inject.Inject,\
-              javax.interceptor.AroundInvoke,\
-              javax.interceptor.AroundTimeout,\
-              javax.interceptor.ExcludeClassInterceptors,\
-              javax.interceptor.ExcludeDefaultInterceptors,\
-              javax.interceptor.Interceptors,\
-              javax.jws.WebService,\
-              javax.persistence.PersistenceContext,\
-              javax.persistence.PersistenceContexts,\
-              javax.persistence.PersistenceUnit,\
-              javax.persistence.PersistenceUnits,\
-              javax.ws.rs.Path,\
-              javax.xml.ws.WebServiceProvider,\
-              javax.xml.ws.WebServiceRef,\
-              javax.xml.ws.WebServiceRefs
-
-subclasses = javax.ws.rs.core.Application
-
-implementations =
diff --git a/maven/spi-helper-maven-plugin/pom.xml b/maven/spi-helper-maven-plugin/pom.xml
deleted file mode 100644
index e4e2d00..0000000
--- a/maven/spi-helper-maven-plugin/pom.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <parent>
-    <artifactId>maven</artifactId>
-    <groupId>org.apache.openejb.maven</groupId>
-    <version>1.0.1-SNAPSHOT</version>
-  </parent>
-  <modelVersion>4.0.0</modelVersion>
-
-  <artifactId>spi-helper-maven-plugin</artifactId>
-  <packaging>maven-plugin</packaging>
-  <name>OpenEJB :: Maven Plugins :: SPI Maven Plugin</name>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-plugin-api</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.xbean</groupId>
-      <artifactId>xbean-finder-shaded</artifactId>
-    </dependency>
-  </dependencies>
-
-  <properties>
-    <maven-plugin.prefix>spi-helper</maven-plugin.prefix>
-  </properties>
-</project>
diff --git a/maven/spi-helper-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/spi/SpiMojo.java b/maven/spi-helper-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/spi/SpiMojo.java
deleted file mode 100644
index c5a47c4..0000000
--- a/maven/spi-helper-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/spi/SpiMojo.java
+++ /dev/null
@@ -1,451 +0,0 @@
-/**
- * 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.openejb.maven.plugin.spi;
-
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.DefaultArtifact;
-import org.apache.maven.artifact.handler.DefaultArtifactHandler;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
-import org.apache.maven.artifact.resolver.ArtifactResolutionException;
-import org.apache.maven.artifact.resolver.ArtifactResolver;
-import org.apache.maven.artifact.versioning.VersionRange;
-import org.apache.maven.model.Dependency;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.project.MavenProject;
-import org.apache.xbean.finder.Annotated;
-import org.apache.xbean.finder.AnnotationFinder;
-import org.apache.xbean.finder.archive.Archive;
-import org.apache.xbean.finder.archive.ClasspathArchive;
-import org.apache.xbean.finder.archive.FileArchive;
-
-import javax.xml.stream.XMLOutputFactory;
-import javax.xml.stream.XMLStreamWriter;
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.FileWriter;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-import java.util.TreeSet;
-
-/**
- * @goal generate
- * @requiresDependencyResolution compile+runtime
- * @phase compile
- */
-public class SpiMojo extends AbstractMojo {
-    private static final String PROFILE_PATH = "org/apache/xbean/profile.properties";
-
-    /**
-     * @parameter default-value="${project.build.outputDirectory}"
-     * @required
-     */
-    private File module;
-
-    /**
-     * @parameter default-value="${project}"
-     * @required
-     * @readonly
-     */
-    private MavenProject project;
-
-    /**
-     * @parameter
-     */
-    private List<String> annotations;
-
-    /**
-     * @parameter
-     */
-    private List<String> subclasses;
-
-    /**
-     * @parameter
-     */
-    private List<String> implementations;
-
-    /**
-     * @parameter
-     */
-    private List<String> profiles;
-
-    /**
-     * @parameter expression="${spi.output}" default-value="${project.build.outputDirectory}/META-INF/scan.xml"
-     *
-     * for webapp: ${project.build.directory}/${project.build.finalName}/WEB-INF/classes/META-INF/scan.xml
-     */
-    private String outputFilename;
-
-    /**
-     * @parameter expression="${spi.meta}" default-value="false"
-     */
-    private boolean useMeta;
-
-    /**
-     * @parameter expression="${spi.aggregated-archive}" default-value="true"
-     */
-    private boolean useAggregatedArchiveIfWar;
-
-    /**
-     * @parameter default-value="${project.packaging}"
-     * @readonly
-     */
-    private String packaging;
-
-    /**
-     * @parameter expression="${project.pluginArtifactRepositories}"
-     * @required
-     * @readonly
-     */
-    private List remotePluginRepositories;
-
-    /**
-     * @parameter expression="${localRepository}"
-     * @readonly
-     * @required
-     */
-    private ArtifactRepository local;
-
-    /**
-     * @component
-     */
-    protected ArtifactResolver resolver;
-
-    @Override
-    public void execute() throws MojoExecutionException, MojoFailureException {
-        final Map<String, Profile> loadedProfiles = loadProfiles();
-
-        //
-        // create profiles to use
-        //
-        final List<Profile> profileToUse = new ArrayList<Profile>();
-        if (profiles != null) {
-            for (String profile : profiles) {
-                if (loadedProfiles.containsKey(profile)) {
-                    profileToUse.add(loadedProfiles.get(profile));
-                } else {
-                    getLog().info("can't find profile " + profile + ", available ones are " + loadedProfiles.keySet());
-                }
-            }
-        }
-        if (annotations != null || subclasses != null || implementations != null) {
-            profileToUse.add(new Profile(annotations, subclasses, implementations));
-        }
-
-        if (profileToUse.isEmpty() && loadedProfiles.size() > 0) {
-            final Map.Entry<String, Profile> profile = loadedProfiles.entrySet().iterator().next();
-            getLog().info("using profile " + profile.getKey());
-            profileToUse.add(profile.getValue());
-        }
-
-        if (profileToUse.isEmpty()) {
-            getLog().warn("no profile or configuration, nothing will be done");
-            return;
-        }
-
-        //
-        // creating the archive and its classloader
-        //
-
-        // war is different since it will contain a single descriptor for its lib too (not an ear)
-        boolean war = "war".equals(packaging);
-        final Archive archive;
-        final URLClassLoader loader = createClassLoader(providedDependenciesClassLoader());
-        if (war && useAggregatedArchiveIfWar) {
-            archive = new ClasspathArchive(loader, loader.getURLs());
-            getLog().info("using an aggregated archive");
-        } else {
-            archive = new FileArchive(loader, module);
-            getLog().info("using a file archive");
-        }
-
-        // the result
-        final Set<String> classes = new TreeSet<String>();
-        try {
-            final AnnotationFinder finder = new AnnotationFinder(archive);
-            finder.link();
-
-            //
-            // find classes
-            //
-
-            for (Profile profile : profileToUse) {
-                if (profile.getAnnotations() != null) {
-                    for (String annotation : profile.getAnnotations()) {
-                        final Class<? extends Annotation> annClazz;
-                        try {
-                            annClazz = (Class<? extends Annotation>) load(loader, annotation);
-                        } catch (MojoFailureException mfe) {
-                            getLog().warn("can't find " + annotation);
-                            continue;
-                        }
-
-                        if (!useMeta) {
-                            for (Class<?> clazz : finder.findAnnotatedClasses(annClazz)) {
-                                classes.add(clazz.getName());
-                            }
-                        } else {
-                            for (Annotated<Class<?>> clazz : finder.findMetaAnnotatedClasses(annClazz)) {
-                                classes.add(clazz.get().getName());
-                            }
-                        }
-
-                        if (!useMeta) {
-                            for (Field clazz : finder.findAnnotatedFields(annClazz)) {
-                                classes.add(clazz.getDeclaringClass().getName());
-                            }
-                        } else {
-                            for (Annotated<Field> clazz : finder.findMetaAnnotatedFields(annClazz)) {
-                                classes.add(clazz.get().getDeclaringClass().getName());
-                            }
-                        }
-
-                        if (!useMeta) {
-                            for (Method clazz : finder.findAnnotatedMethods(annClazz)) {
-                                classes.add(clazz.getDeclaringClass().getName());
-                            }
-                        } else {
-                            for (Annotated<Method> clazz : finder.findMetaAnnotatedMethods(annClazz)) {
-                                classes.add(clazz.get().getDeclaringClass().getName());
-                            }
-                        }
-                    }
-                }
-
-                if (profile.getSubclasses() != null) {
-                    for (String subclass : profile.getSubclasses()) {
-                        try {
-                            for (Class<?> clazz : finder.findSubclasses(load(loader, subclass))) {
-                                classes.add(clazz.getName());
-                            }
-                        } catch (MojoFailureException mfe) {
-                            getLog().warn("can't find " + subclass);
-                        }
-                    }
-                }
-
-                if (profile.getImplementations() != null) {
-                    for (String implementation : profile.getImplementations()) {
-                        try {
-                            for (Class<?> clazz : finder.findImplementations(load(loader, implementation))) {
-                                classes.add(clazz.getName());
-                            }
-                        } catch (MojoFailureException mfe) {
-                            getLog().warn("can't find " + implementation);
-                        }
-                    }
-                }
-            }
-
-            //
-            // dump found classes
-            //
-
-            final File output = new File(outputFilename);
-            if (!output.getParentFile().exists() && !output.getParentFile().mkdirs()) {
-                getLog().error("can't create " + output.getParent());
-                return;
-            }
-
-            final XMLStreamWriter out = XMLOutputFactory.newInstance().createXMLStreamWriter(new FileWriter(outputFilename));
-            try {
-                out.writeStartDocument();
-                out.writeStartElement("scan");
-                out.writeCharacters("\n");
-
-                    out.writeCharacters("  ");
-                    out.writeStartElement("classes");
-                    out.writeCharacters("\n");
-
-                    for (String clazz : classes) {
-                        out.writeCharacters("    ");
-                        out.writeStartElement("class");
-                            out.writeCharacters(clazz);
-                        out.writeEndElement();
-                        out.writeCharacters("\n");
-                    }
-
-                    out.writeCharacters("  ");
-                    out.writeEndElement();
-                    out.writeCharacters("\n");
-
-                    out.writeCharacters("  ");
-                    out.writeStartElement("packages");
-                    out.writeCharacters("\n  ");
-                    out.writeEndElement();
-                    out.writeCharacters("\n");
-
-                out.writeEndElement();
-                out.writeEndDocument();
-            } finally {
-                out.flush();
-                out.close();
-            }
-
-            getLog().info("generated " + output.getPath());
-        } catch (Exception e) {
-            getLog().error(e);
-        }
-    }
-
-    private Map<String, Profile> loadProfiles() {
-        final Map<String, Profile> profiles = new HashMap<String, Profile>();
-        try {
-            final Enumeration<URL> urls = Thread.currentThread().getContextClassLoader().getResources(PROFILE_PATH);
-            while (urls.hasMoreElements()) {
-                final URL url = urls.nextElement();
-                final Properties properties = new Properties();
-                properties.load(new BufferedInputStream(url.openStream()));
-
-                final String name = properties.getProperty("name");
-                if (name == null) {
-                    getLog().warn("ignoring " + url.toExternalForm() + " since it doesn't contain a name");
-                }
-                
-
-                final List<String> profileAnnotations = list(properties.getProperty("annotations"));
-                final List<String> profileSubclasses = list(properties.getProperty("subclasses"));
-                final List<String> profileImplementations = list(properties.getProperty("implementations"));
-
-                profiles.put(name, new Profile(profileAnnotations, profileSubclasses, profileImplementations));
-            }
-        } catch (Exception e) {
-            getLog().warn("can't look for profiles");
-        }
-        return profiles;
-    }
-
-    private static List<String> list(final String commaSeparatedList) {
-        final List<String> list = new ArrayList<String>();
-        if (commaSeparatedList != null) {
-            for (String value : commaSeparatedList.split(",")) {
-                final String trimmed = value.trim();
-                if (!trimmed.isEmpty()) {
-                    list.add(trimmed);
-                }
-            }
-        }
-        return list;
-    }
-
-    private ClassLoader providedDependenciesClassLoader() {
-        final Set<URL> urls = new HashSet<URL>();
-
-        // provided artifacts
-        for (Artifact artifact : (Set<Artifact>) project.getDependencyArtifacts()) {
-            if (!"provided".equals(artifact.getScope())) {
-                continue;
-            }
-
-            try {
-                urls.add(artifact.getFile().toURI().toURL());
-            } catch (MalformedURLException e) {
-                getLog().warn("can't use artifact " + artifact.toString());
-            }
-        }
-
-        // plugin dependencies
-        final Plugin thisPlugin = (Plugin) project.getBuild().getPluginsAsMap().get("org.apache.openejb.maven:spi-helper-maven-plugin");
-        if (thisPlugin != null && thisPlugin.getDependencies() != null) {
-            for (Dependency artifact : thisPlugin.getDependencies()) {
-                final Artifact resolved = new DefaultArtifact(
-                        artifact.getGroupId(), artifact.getArtifactId(), VersionRange.createFromVersion(artifact.getVersion()),
-                        artifact.getScope(), artifact.getType(), artifact.getClassifier(), new DefaultArtifactHandler());
-                try {
-                    resolver.resolve(resolved, remotePluginRepositories, local);
-                    urls.add(resolved.getFile().toURI().toURL());
-                } catch (ArtifactResolutionException e) {
-                    getLog().warn("can't resolve " + artifact.getArtifactId());
-                } catch (ArtifactNotFoundException e) {
-                    getLog().warn("can't find " + artifact.getArtifactId());
-                } catch (MalformedURLException e) {
-                    getLog().warn("can't get url of " + resolved.getFile() + " for artifact " + resolved.getArtifactId());
-                }
-            }
-        }
-
-        return new URLClassLoader(urls.toArray(new URL[urls.size()]), ClassLoader.getSystemClassLoader());
-    }
-
-    private Class<?> load(final ClassLoader loader, final String name) throws MojoFailureException {
-        try {
-            return loader.loadClass(name);
-        } catch (ClassNotFoundException e) {
-            throw new MojoFailureException("can't load " + name, e);
-        }
-    }
-
-    private URLClassLoader createClassLoader(final ClassLoader parent) {
-        final List<URL> urls = new ArrayList<URL>();
-        for (Artifact artifact : (Set<Artifact>) project.getArtifacts()) {
-            try {
-                urls.add(artifact.getFile().toURI().toURL());
-            } catch (MalformedURLException e) {
-                getLog().warn("can't use artifact " + artifact.toString());
-            }
-        }
-        if (module.exists()) {
-            try {
-                urls.add(module.toURI().toURL());
-            } catch (MalformedURLException e) {
-                getLog().warn("can't use path " + module.getPath());
-            }
-        } else {
-            getLog().warn("can't find " + module.getPath());
-        }
-        return new URLClassLoader(urls.toArray(new URL[urls.size()]), parent);
-    }
-
-    public static final class Profile {
-        private List<String> annotations;
-        private List<String> subclasses;
-        private List<String> implementations;
-
-        public Profile(final List<String> annotations, final List<String> subclasses, final List<String> implementations) {
-            this.annotations = annotations;
-            this.subclasses = subclasses;
-            this.implementations = implementations;
-        }
-
-        public List<String> getAnnotations() {
-            return annotations;
-        }
-
-        public List<String> getSubclasses() {
-            return subclasses;
-        }
-
-        public List<String> getImplementations() {
-            return implementations;
-        }
-    }
-}
diff --git a/maven/tomee-embedded-maven-plugin/pom.xml b/maven/tomee-embedded-maven-plugin/pom.xml
index 5e6a49f..d60de65 100644
--- a/maven/tomee-embedded-maven-plugin/pom.xml
+++ b/maven/tomee-embedded-maven-plugin/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <artifactId>maven</artifactId>
     <groupId>org.apache.openejb.maven</groupId>
-    <version>1.0.1-SNAPSHOT</version>
+    <version>1.0.1</version>
   </parent>
 
   <artifactId>tomee-embedded-maven-plugin</artifactId>
diff --git a/maven/tomee-maven-plugin/pom.xml b/maven/tomee-maven-plugin/pom.xml
index ef19fce..3347238 100644
--- a/maven/tomee-maven-plugin/pom.xml
+++ b/maven/tomee-maven-plugin/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <artifactId>maven</artifactId>
     <groupId>org.apache.openejb.maven</groupId>
-    <version>1.0.1-SNAPSHOT</version>
+    <version>1.0.1</version>
   </parent>
 
   <artifactId>tomee-maven-plugin</artifactId>
diff --git a/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java b/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
index 0f492b0..3916644 100644
--- a/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
+++ b/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
@@ -89,7 +89,7 @@
     @Parameter(property = "tomee-plugin.skipCurrentProject", defaultValue = "false")
     protected boolean skipCurrentProject;
 
-    @Parameter(property = "tomee-plugin.version", defaultValue = "1.5.1-SNAPSHOT")
+    @Parameter(property = "tomee-plugin.version", defaultValue = "1.5.1")
     protected String tomeeVersion;
 
     @Parameter(property = "tomee-plugin.groupId", defaultValue = "org.apache.openejb")
@@ -235,7 +235,8 @@
     private void removeDefaultWebapps(final boolean removeTomee) {
         final File webapps = new File(catalinaBase, webappDir);
         if (webapps.isDirectory()) {
-            for (File webapp : webapps.listFiles()) {
+            final File[] files = webapps.listFiles();
+            if (null != files) for (File webapp : files) {
                 final String name = webapp.getName();
                 if (webapp.isDirectory() && (removeTomee || !name.equals("tomee"))) {
                     try {
@@ -529,7 +530,8 @@
 
         if (getNoShutdownHook()) {
             Runtime.getRuntime().addShutdownHook(new Thread() {
-                @Override public void run() {
+                @Override
+                public void run() {
                     server.stop();
                 }
             });
@@ -558,7 +560,7 @@
         // no-op
     }
 
-    protected  int getConnectAttempts() {
+    protected int getConnectAttempts() {
         return Integer.MAX_VALUE;
     }
 
diff --git a/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UpdatableTomEEMojo.java b/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UpdatableTomEEMojo.java
index 54e0f5c..3a464c0 100644
--- a/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UpdatableTomEEMojo.java
+++ b/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UpdatableTomEEMojo.java
@@ -89,7 +89,8 @@
     protected void addShutdownHooks(final RemoteServer server) {
         if (synchronization != null) {
             Runtime.getRuntime().addShutdownHook(new Thread() {
-                @Override public void run() {
+                @Override
+                public void run() {
                     timer.cancel();
                 }
             });
diff --git a/maven/tomee-webapp-archetype/pom.xml b/maven/tomee-webapp-archetype/pom.xml
new file mode 100644
index 0000000..c173b3e
--- /dev/null
+++ b/maven/tomee-webapp-archetype/pom.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <parent>
+    <artifactId>maven</artifactId>
+    <groupId>org.apache.openejb.maven</groupId>
+    <version>1.0.1</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+
+  <artifactId>tomee-webapp-archetype</artifactId>
+  <name>OpenEJB :: Maven Plugins :: TomEE Webapp Archetype</name>
+</project>
diff --git a/maven/tomee-webapp-archetype/src/main/resources/META-INF/archetype.xml b/maven/tomee-webapp-archetype/src/main/resources/META-INF/archetype.xml
new file mode 100644
index 0000000..0339b82
--- /dev/null
+++ b/maven/tomee-webapp-archetype/src/main/resources/META-INF/archetype.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+  -->
+<archetype xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype/1.0.0"
+           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+           xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype/1.0.0
+                               http://maven.apache.org/xsd/archetype-1.0.0.xsd">
+  <id>quickstart</id>
+  <sources>
+    <source>src/main/java/Index.java</source>
+  </sources>
+  <resources>
+    <resource>src/main/webapp/WEB-INF/beans.xml</resource>
+  </resources>
+  <testResources>
+    <resource>src/test/resources/arquillian.xml</resource>
+  </testResources>
+</archetype>
diff --git a/maven/tomee-webapp-archetype/src/main/resources/archetype-resources/pom.xml b/maven/tomee-webapp-archetype/src/main/resources/archetype-resources/pom.xml
new file mode 100644
index 0000000..a6402ce
--- /dev/null
+++ b/maven/tomee-webapp-archetype/src/main/resources/archetype-resources/pom.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>${groupId}</groupId>
+  <artifactId>${artifactId}</artifactId>
+  <version>${version}</version>
+  <packaging>war</packaging>
+  <name>${artifactId} TomEE Webapp</name>
+  <url>http://tomee.apache.org</url>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>javaee-api</artifactId>
+      <version>6.0-4</version>
+      <scope>provided</scope>
+    </dependency>
+
+    <!-- to test with TomEE and Arquillian
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>arquillian-tomee-remote</artifactId>
+      <version>1.5.1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.jboss.arquillian.junit</groupId>
+      <artifactId>arquillian-junit-container</artifactId>
+      <version>1.0.3.Final</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.11</version>
+      <scope>test</scope>
+    </dependency>
+    -->
+
+    <!-- to test with OpenEJB embedded and Arquillian
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>arquillian-openejb-embedded-4</artifactId>
+      <version>4.5.1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.jboss.arquillian.junit</groupId>
+      <artifactId>arquillian-junit-container</artifactId>
+      <version>1.0.3.Final</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.11</version>
+      <scope>test</scope>
+    </dependency>
+    -->
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>2.5.1</version>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <version>2.12.4</version>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-war-plugin</artifactId>
+        <version>2.3</version>
+        <configuration>
+          <failOnMissingWebXml>false</failOnMissingWebXml>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.openejb.maven</groupId>
+        <artifactId>tomee-maven-plugin</artifactId>
+        <version>1.0.1</version>
+      </plugin>
+    </plugins>
+  </build>
+
+  <repositories>
+    <repository>
+      <id>apache-snapshot</id>
+      <name>Apache Snapshot Repository</name>
+      <url>https://repository.apache.org/content/groups/snapshots/</url>
+    </repository>
+  </repositories>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+</project>
diff --git a/maven/tomee-webapp-archetype/src/main/resources/archetype-resources/src/main/java/Index.java b/maven/tomee-webapp-archetype/src/main/resources/archetype-resources/src/main/java/Index.java
new file mode 100644
index 0000000..5e97d3f
--- /dev/null
+++ b/maven/tomee-webapp-archetype/src/main/resources/archetype-resources/src/main/java/Index.java
@@ -0,0 +1,33 @@
+/*
+ * 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 ${groupId};
+
+import java.io.IOException;
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@WebServlet(urlPatterns = "/index")
+public class Index extends HttpServlet {
+    @Override
+    protected void service(final HttpServletRequest request, final HttpServletResponse response)
+            throws ServletException, IOException {
+        response.getWriter().write("Index");
+    }
+}
\ No newline at end of file
diff --git a/examples/cdi-query/src/main/resources/META-INF/beans.xml b/maven/tomee-webapp-archetype/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/beans.xml
similarity index 100%
rename from examples/cdi-query/src/main/resources/META-INF/beans.xml
rename to maven/tomee-webapp-archetype/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/beans.xml
diff --git a/maven/tomee-webapp-archetype/src/main/resources/archetype-resources/src/test/resources/arquillian.xml b/maven/tomee-webapp-archetype/src/main/resources/archetype-resources/src/test/resources/arquillian.xml
new file mode 100644
index 0000000..3795244
--- /dev/null
+++ b/maven/tomee-webapp-archetype/src/main/resources/archetype-resources/src/test/resources/arquillian.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+
+    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.
+-->
+<arquillian
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
+  <!-- if you decided to use openejb embedded adapter in the pom
+  <container qualifier="openejb-embedded" default="true">
+    <configuration>
+      <property name="properties">
+        my-datasource = new://Resource?type=DataSource
+        my-datasource.JdbcUrl = jdbc:hsqldb:mem:my-datasource
+        my-datasource.UserName = sa
+        my-datasource.Password =
+      </property>
+    </configuration>
+  </container>
+  -->
+  <!-- if you decided to use tomee adapter in the pom
+  <container qualifier="tomee" default="true">
+    <configuration>
+      <property name="httpPort">-1</property>
+      <property name="stopPort">-1</property>
+      <property name="ajpPort">-1</property>
+      <property name="version">${tomee.version}</property>
+      <property name="dir">target/apache-tomee-remote</property>
+      <property name="appWorkingDir">target/arquillian-test-working-dir</property>
+      <property name="properties" />
+    </configuration>
+  </container>
+  -->
+</arquillian>
diff --git a/osgi/apache-karafee/pom.xml b/osgi/apache-karafee/pom.xml
index 819b9cf..265115c 100644
--- a/osgi/apache-karafee/pom.xml
+++ b/osgi/apache-karafee/pom.xml
@@ -21,13 +21,13 @@
   <parent>
     <artifactId>osgi</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
   <artifactId>apache-karafee</artifactId>
   <name>OpenEJB :: OSGi :: Apache KarafEE</name>
-  <version>1.5.1-SNAPSHOT</version>
+  <version>1.5.1</version>
   <packaging>pom</packaging>
 
   <!--
diff --git a/osgi/openejb-core-osgi/pom.xml b/osgi/openejb-core-osgi/pom.xml
index 2912bc3..40a8845 100755
--- a/osgi/openejb-core-osgi/pom.xml
+++ b/osgi/openejb-core-osgi/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>osgi</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-core-osgi</artifactId>
diff --git a/osgi/openejb-feature/pom.xml b/osgi/openejb-feature/pom.xml
index a0a0b28..ed91ba6 100644
--- a/osgi/openejb-feature/pom.xml
+++ b/osgi/openejb-feature/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>osgi</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
@@ -68,24 +68,6 @@
       </resource>
     </resources>
     <plugins>
-      <!--
-      <plugin>
-        <groupId>org.apache.karaf.tooling</groupId>
-        <artifactId>karaf-maven-plugin</artifactId>
-        <version>3.0.1-SNAPSHOT</version>
-        <configuration>
-        </configuration>
-        <executions>
-          <execution>
-            <id>compile</id>
-            <phase>compile</phase>
-            <goals>
-              <goal>features-generate-descriptor</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      -->
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-resources-plugin</artifactId>
diff --git a/osgi/openejb-karaf-commands/pom.xml b/osgi/openejb-karaf-commands/pom.xml
index 27f2a70..ce86078 100644
--- a/osgi/openejb-karaf-commands/pom.xml
+++ b/osgi/openejb-karaf-commands/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>osgi</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/osgi/openejb-karaf-rebranding/pom.xml b/osgi/openejb-karaf-rebranding/pom.xml
index d89775e..2b67718 100644
--- a/osgi/openejb-karaf-rebranding/pom.xml
+++ b/osgi/openejb-karaf-rebranding/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>osgi</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/osgi/openejb-osgi-tests/pom.xml b/osgi/openejb-osgi-tests/pom.xml
index b28db62..819482a 100644
--- a/osgi/openejb-osgi-tests/pom.xml
+++ b/osgi/openejb-osgi-tests/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>osgi</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/osgi/pom.xml b/osgi/pom.xml
index 8595b0c..c2ab9d7 100644
--- a/osgi/pom.xml
+++ b/osgi/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>openejb</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
@@ -41,7 +41,7 @@
 
   <properties>
     <karaf.version>2.3.0</karaf.version>
-    <karafee.version>1.5.1-SNAPSHOT</karafee.version>
+    <karafee.version>1.5.1</karafee.version>
   </properties>
 
   <!-- for debugging pupose
diff --git a/pom.xml b/pom.xml
index edc00f0..1016bc1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -33,12 +33,10 @@
   <artifactId>openejb</artifactId>
   <packaging>pom</packaging>
 
-  <version>4.5.1-SNAPSHOT</version>
+  <version>4.5.1</version>
 
   <name>Apache OpenEJB</name>
-  <description>Apache OpenEJB is an open source, modular, configurable and extendable EJB Container System and EJB
-    Server.
-  </description>
+  <description>Apache OpenEJB is an open source, modular, configurable and extendable EJB Container System and EJB Server.</description>
   <url>http://openejb.apache.org/</url>
   <inceptionYear>1999</inceptionYear>
 
@@ -90,8 +88,8 @@
 
   <properties>
 
-    <openejb.version>4.5.1-SNAPSHOT</openejb.version>
-    <tomee.version>1.5.1-SNAPSHOT</tomee.version>
+    <openejb.version>4.5.1</openejb.version>
+    <tomee.version>1.5.1</tomee.version>
 
     <!-- Maven module versions -->
     <maven-bundle-plugin.version>2.3.7</maven-bundle-plugin.version>
@@ -119,11 +117,11 @@
     <jaxb.version>2.2.6</jaxb.version>
 
     <!-- Used mainly in assembly/openejb-tomcat* projects  -->
-    <tomcat.bundle.version>7.0.32-SNAPSHOT</tomcat.bundle.version> <!-- don't merge with tomcat.version since we can release it ourself -->
-    <tomcat.version>7.0.32</tomcat.version>
+    <tomcat.bundle.version>7.0.34</tomcat.bundle.version> <!-- don't merge with tomcat.version since we can release it ourself -->
+    <tomcat.version>7.0.34</tomcat.version>
 
     <!-- used mainly by jetty modules -->
-    <cxf.version>2.7.0</cxf.version>
+    <cxf.version>2.6.3</cxf.version>
     <ehcache.version>2.6.0</ehcache.version> <!-- used by cxf for security (replay attack) -->
     <jetty.version>7.5.3.v20111011</jetty.version>
     <pax-url.version>1.3.5</pax-url.version>
@@ -145,11 +143,11 @@
     <junit.version>4.9</junit.version>
     <org.apache.axis2.version>1.4.1</org.apache.axis2.version>
     <scannotation.version>1.0.2</scannotation.version>
-    <org.apache.openwebbeans.version>1.1.6</org.apache.openwebbeans.version>
+    <org.apache.openwebbeans.version>1.1.7</org.apache.openwebbeans.version>
     <geronimo.connector.version>3.1.1</geronimo.connector.version>
     <geronimo-osgi.version>1.1</geronimo-osgi.version>
     <geronimo-javamail_1.4_spec.version>1.7.1</geronimo-javamail_1.4_spec.version>
-    <myfaces.version>2.1.9</myfaces.version>
+    <myfaces.version>2.1.10</myfaces.version>
     <slf4j.version>1.7.2</slf4j.version>
     <log4j.version>1.2.17</log4j.version>
     <osgi.framework.version>4.2.0</osgi.framework.version>
@@ -353,6 +351,45 @@
       </modules>
     </profile>
     <profile>
+      <id>style</id>
+      <modules>
+      </modules>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-checkstyle-plugin</artifactId>
+            <version>2.9.1</version>
+            <configuration>
+              <sourceDirectory>${project.build.directory}/../container/openejb-core/src/main/java/org/apache/openejb/config</sourceDirectory>
+              <configLocation>checkstyle.xml</configLocation>
+              <consoleOutput>true</consoleOutput>
+              <enableRulesSummary>false</enableRulesSummary>
+              <failsOnError>true</failsOnError>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+      <repositories>
+        <repository>
+          <releases>
+            <enabled>false</enabled>
+          </releases>
+          <id>Codehaus Snapshots</id>
+          <url>http://snapshots.repository.codehaus.org/</url>
+        </repository>
+      </repositories>
+      <pluginRepositories>
+        <pluginRepository>
+          <releases>
+            <enabled>false</enabled>
+          </releases>
+          <id>Codehaus Snapshots</id>
+          <url>http://snapshots.repository.codehaus.org/</url>
+        </pluginRepository>
+      </pluginRepositories>
+    </profile>
+    <profile>
       <id>rat</id>
       <modules>
         <module>deps</module>
@@ -440,6 +477,14 @@
     <!--</repository>-->
     <!-- Apache snapshots -->
     <repository>
+      <id>OWB-1.1.7</id>
+      <url>https://repository.apache.org/content/repositories/orgapacheopenwebbeans-117/</url>
+    </repository>
+    <repository>
+      <id>tomcat-7.0.34</id>
+      <url>https://repository.apache.org/content/repositories/orgapachetomcat-113/</url>
+    </repository>
+    <repository>
       <id>apache-snapshots</id>
       <name>Apache Snapshots Repository</name>
       <url>http://repository.apache.org/content/groups/snapshots-group</url>
diff --git a/rat.xml b/rat.xml
index 7c5dc11..a6184af 100644
--- a/rat.xml
+++ b/rat.xml
@@ -74,13 +74,11 @@
           <exclude name="tomee/tomee-myfaces/src/main/resources/META-INF/services/org.apache.myfaces.spi.FacesConfigResourceProviderFactory"/>
           <exclude name="tomee/tomee-mojarra/src/main/resources/META-INF/services/com.sun.faces.spi.injectionprovider" />
           <exclude name="tomee/tomee-jdbc/src/test/resources/META-INF/org.apache.openejb.resource.jdbc.cipher.PasswordCipher/Mock" />
-          <exclude name="tomee/tomee-webapp/src/main/webapp/lib/jquery/jquery-1.7.2.min.js" /> <!-- minimize so ignored -->
-          <exclude name="tomee/tomee-webapp/src/main/webapp/js/jquery/jquery-1.7.1.js"/>
-          <exclude name="tomee/tomee-webapp/src/main/webapp/lib/bootstrap/**" /> 
-          <exclude name="tomee/tomee-webapp/src/main/webapp/lib/codemirror/**" /> 
-          <exclude name="tomee/tomee-webapp/src/main/webapp/lib/handlebars/**" /> 
-          <exclude name="tomee/tomee-webapp/src/main/webapp/lib/jquery/**" /> 
-          <exclude name="tomee/tomee-webapp/src/main/webapp/lib/less/**" />
+          <exclude name="tomee/tomee-webapp/src/main/webapp/app/lib/bootstrap/**" /> 
+          <exclude name="tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/**" /> 
+          <exclude name="tomee/tomee-webapp/src/main/webapp/app/lib/handlebars/**" /> 
+          <exclude name="tomee/tomee-webapp/src/main/webapp/app/lib/jquery/**" /> 
+          <exclude name="tomee/tomee-webapp/src/main/webapp/app/lib/less/**" />
           <!-- TODO check if that's really excluded -->
           <exclude name="tomee/tomee-webapp/src/main/webapp/app/js/templates/**" />
 
diff --git a/server/openejb-activemq/pom.xml b/server/openejb-activemq/pom.xml
index af22e5e..aa58c70 100644
--- a/server/openejb-activemq/pom.xml
+++ b/server/openejb-activemq/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-activemq</artifactId>
diff --git a/server/openejb-axis/pom.xml b/server/openejb-axis/pom.xml
index a308a84..01e7e5f 100644
--- a/server/openejb-axis/pom.xml
+++ b/server/openejb-axis/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-axis</artifactId>
diff --git a/server/openejb-bonecp/pom.xml b/server/openejb-bonecp/pom.xml
index 9c7fba8..8e3dae0 100644
--- a/server/openejb-bonecp/pom.xml
+++ b/server/openejb-bonecp/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/server/openejb-client/pom.xml b/server/openejb-client/pom.xml
index 8ea54ee..72f5224 100644
--- a/server/openejb-client/pom.xml
+++ b/server/openejb-client/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-client</artifactId>
diff --git a/server/openejb-client/src/main/java/org/apache/openejb/client/ConnectionManager.java b/server/openejb-client/src/main/java/org/apache/openejb/client/ConnectionManager.java
index 3d7cd75..3916fb2 100644
--- a/server/openejb-client/src/main/java/org/apache/openejb/client/ConnectionManager.java
+++ b/server/openejb-client/src/main/java/org/apache/openejb/client/ConnectionManager.java
@@ -38,6 +38,8 @@
         registerFactory("default", ejbdFactory);
         registerFactory("ejbd", ejbdFactory);
         registerFactory("ejbds", ejbdFactory);
+        registerFactory("zejbd", ejbdFactory);
+        registerFactory("zejbds", ejbdFactory);
 
         final HttpConnectionFactory httpFactory = new HttpConnectionFactory();
         registerFactory("http", httpFactory);
diff --git a/server/openejb-client/src/main/java/org/apache/openejb/client/FlushableGZIPOutputStream.java b/server/openejb-client/src/main/java/org/apache/openejb/client/FlushableGZIPOutputStream.java
new file mode 100644
index 0000000..2012d19
--- /dev/null
+++ b/server/openejb-client/src/main/java/org/apache/openejb/client/FlushableGZIPOutputStream.java
@@ -0,0 +1,141 @@
+/*
+ *  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.openejb.client;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.zip.Deflater;
+import java.util.zip.GZIPOutputStream;
+
+/**
+ * Extension of {@link GZIPOutputStream} to workaround for a couple of long
+ * standing JDK bugs
+ * (<a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4255743">Bug
+ * 4255743</a> and
+ * <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4813885">Bug
+ * 4813885</a>) so the GZIP'd output can be flushed. 
+ */
+public class FlushableGZIPOutputStream extends GZIPOutputStream {
+    public FlushableGZIPOutputStream(OutputStream os) throws IOException {
+        super(os);
+    }
+
+    /**
+     * It is used to reserve one byte of real data so that it can be used when
+     * flushing the stream.
+     */
+    private byte[] lastByte = new byte[1];
+    private boolean hasLastByte = false;
+
+    @Override
+    public void write(byte[] bytes) throws IOException {
+        write(bytes, 0, bytes.length);
+    }
+
+    @Override
+    public synchronized void write(byte[] bytes, int offset, int length)
+            throws IOException {
+        if (length > 0) {
+            flushLastByte();
+            if (length > 1) {
+                super.write(bytes, offset, length - 1);
+            }
+            rememberLastByte(bytes[offset + length - 1]);
+        }
+    }
+
+    @Override
+    public synchronized void write(int i) throws IOException {
+        flushLastByte();
+        rememberLastByte((byte) i);
+    }
+
+    @Override
+    public synchronized void finish() throws IOException {
+        try {
+            flushLastByte();
+        } catch (IOException ignore) {
+            // If our write failed, then trailer write in finish() will fail
+            // with IOException as well, but it will leave Deflater in more
+            // consistent state.
+        }
+        super.finish();
+    }
+
+    @Override
+    public synchronized void close() throws IOException {
+        try {
+            flushLastByte();
+        } catch (IOException ignored) {
+            // Ignore. As OutputStream#close() says, the contract of close()
+            // is to close the stream. It does not matter much if the
+            // stream is not writable any more.
+        }
+        super.close();
+    }
+
+    private void rememberLastByte(byte b) {
+        lastByte[0] = b;
+        hasLastByte = true;
+    }
+
+    private void flushLastByte() throws IOException {
+        if (hasLastByte) {
+            // Clear the flag first, because write() may fail
+            hasLastByte = false;
+            super.write(lastByte, 0, 1);
+        }
+    }
+
+    @Override
+    public synchronized void flush() throws IOException {
+        if (hasLastByte) {
+            // - do not allow the gzip header to be flushed on its own
+            // - do not do anything if there is no data to send
+
+            // trick the deflater to flush
+            /**
+             * Now this is tricky: We force the Deflater to flush its data by
+             * switching compression level. As yet, a perplexingly simple workaround
+             * for
+             * http://developer.java.sun.com/developer/bugParade/bugs/4255743.html
+             */
+            if (!def.finished()) {
+                def.setLevel(Deflater.NO_COMPRESSION);
+                flushLastByte();
+                def.setLevel(Deflater.DEFAULT_COMPRESSION);
+            }
+        }
+        out.flush();
+    }
+
+    /*
+     * Keep on calling deflate until it runs dry. The default implementation
+     * only does it once and can therefore hold onto data when they need to be
+     * flushed out.
+     */
+    @Override
+    protected void deflate() throws IOException {
+        int len;
+        do {
+            len = def.deflate(buf, 0, buf.length);
+            if (len > 0) {
+                out.write(buf, 0, len);
+            }
+        } while (len > 0 || !def.needsInput());
+    }
+}
diff --git a/server/openejb-client/src/main/java/org/apache/openejb/client/Registry.java b/server/openejb-client/src/main/java/org/apache/openejb/client/Registry.java
index 0cfc40e..7347104 100644
--- a/server/openejb-client/src/main/java/org/apache/openejb/client/Registry.java
+++ b/server/openejb-client/src/main/java/org/apache/openejb/client/Registry.java
@@ -34,7 +34,7 @@
 
 
     public static <T> Registry<T> create(Class<T> type){
-        return new Registry(type);
+        return new Registry<T>(type);
     }
 
     private Registry(Class<T> type) {
diff --git a/server/openejb-client/src/main/java/org/apache/openejb/client/SocketConnectionFactory.java b/server/openejb-client/src/main/java/org/apache/openejb/client/SocketConnectionFactory.java
index f4e2425..5de2f4c 100644
--- a/server/openejb-client/src/main/java/org/apache/openejb/client/SocketConnectionFactory.java
+++ b/server/openejb-client/src/main/java/org/apache/openejb/client/SocketConnectionFactory.java
@@ -40,6 +40,7 @@
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
+import java.util.zip.GZIPInputStream;
 
 public class SocketConnectionFactory implements ConnectionFactory {
 
@@ -198,7 +199,8 @@
         private final Pool pool;
         private final Lock lock = new ReentrantLock();
         private OutputStream out;
-        private BufferedInputStream in;
+        private InputStream in;
+        private boolean gzip = false;
 
         public SocketConnection(final URI uri, final Pool pool) {
             this.uri = uri;
@@ -251,7 +253,8 @@
             final InetSocketAddress address = new InetSocketAddress(uri.getHost(), uri.getPort());
 
             try {
-                if (uri.getScheme().equalsIgnoreCase("ejbds")) {
+                final String scheme = uri.getScheme();
+                if (scheme.equalsIgnoreCase("ejbds") || scheme.equalsIgnoreCase("zejbds")) {
                     final SSLSocket sslSocket = (SSLSocket) SSLSocketFactory.getDefault().createSocket();
                     sslSocket.setEnabledCipherSuites(enabledCipherSuites);
                     this.socket = sslSocket;
@@ -260,6 +263,10 @@
                     this.socket = new Socket();
                 }
 
+                if (scheme.startsWith("z")) {
+                    gzip = true;
+                }
+
                 this.socket.setTcpNoDelay(true);
                 this.socket.setSoLinger(true, 10);
                 this.socket.connect(address, SocketConnectionFactory.this.timeoutSocket);
@@ -319,7 +326,11 @@
             /*----------------------------------*/
             try {
                 if (in == null) {
-                    in = new BufferedInputStream(socket.getInputStream());
+                    if (!gzip) {
+                        in = new BufferedInputStream(socket.getInputStream());
+                    } else {
+                        in = new GZIPInputStream(new BufferedInputStream(socket.getInputStream()));
+                    }
                 }
 
                 return new Input(in);
@@ -341,7 +352,11 @@
             try {
 
                 if (out == null) {
-                    out = new BufferedOutputStream(socket.getOutputStream());
+                    if (!gzip) {
+                        out = new BufferedOutputStream(socket.getOutputStream());
+                    } else {
+                        out = new BufferedOutputStream(new FlushableGZIPOutputStream(socket.getOutputStream()));
+                    }
                 }
 
                 return new Output(out);
diff --git a/server/openejb-client/src/main/java/org/apache/openejb/client/proxy/Jdk13ProxyFactory.java b/server/openejb-client/src/main/java/org/apache/openejb/client/proxy/Jdk13ProxyFactory.java
index 27c8d14..624b8e7 100644
--- a/server/openejb-client/src/main/java/org/apache/openejb/client/proxy/Jdk13ProxyFactory.java
+++ b/server/openejb-client/src/main/java/org/apache/openejb/client/proxy/Jdk13ProxyFactory.java
@@ -147,7 +147,8 @@
             delegatingClassloaders = classLoaders;
         }
 
-        @Override public Class<?> loadClass(String name) throws ClassNotFoundException {
+        @Override
+        public Class<?> loadClass(String name) throws ClassNotFoundException {
             ClassNotFoundException ex = null;
             for (ClassLoader cl : delegatingClassloaders) {
                 try {
diff --git a/server/openejb-client/src/test/java/org/apache/openejb/client/StickyConnectionStrategyIteratorTest.java b/server/openejb-client/src/test/java/org/apache/openejb/client/StickyConnectionStrategyIteratorTest.java
index 09efb28..d3cbbe9 100644
--- a/server/openejb-client/src/test/java/org/apache/openejb/client/StickyConnectionStrategyIteratorTest.java
+++ b/server/openejb-client/src/test/java/org/apache/openejb/client/StickyConnectionStrategyIteratorTest.java
@@ -21,10 +21,6 @@
 
 import java.net.URI;
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
 
 /**
  * @version $Rev$ $Date$
@@ -64,28 +60,29 @@
             Assert.assertEquals(uri, iterable.iterator().next());
         }
 
-//        assertIteration(uris, iterable);
+        assertIteration(uris, iterable);
 
     }
 
     private void assertIteration(URI[] uris, Iterable<URI> iterable) {
-        List<URI> found = new ArrayList<URI>();
+        ArrayList<URI> found = new ArrayList<URI>();
 
         for (URI uri : iterable) {
-            found.add(uri);
+            if (!found.contains(uri)) found.add(uri);
         }
 
         Assert.assertEquals(uris.length, found.size());
+
         for (URI uri : uris) {
             Assert.assertTrue(found.contains(uri));
         }
 
-        Assert.assertFalse("Found: " + found + ", Expected: " + Arrays.asList(uris),
-                found.get(0).equals(uris[0]) &&
-                found.get(1).equals(uris[1]) &&
-                found.get(2).equals(uris[2]) &&
-                found.get(3).equals(uris[3])
-        );
+//        Assert.assertTrue("Found: " + found + ", Expected: " + Arrays.asList(uris),
+//                found.get(0).equals(uris[0]) &&
+//                        found.get(1).equals(uris[1]) &&
+//                        found.get(2).equals(uris[2]) &&
+//                        found.get(3).equals(uris[3])
+//        );
     }
 
 
diff --git a/server/openejb-common-cli/pom.xml b/server/openejb-common-cli/pom.xml
index 221f65b..a5f8d84 100644
--- a/server/openejb-common-cli/pom.xml
+++ b/server/openejb-common-cli/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/server/openejb-cxf-rs/pom.xml b/server/openejb-cxf-rs/pom.xml
index 033b4cd..0485400 100644
--- a/server/openejb-cxf-rs/pom.xml
+++ b/server/openejb-cxf-rs/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
@@ -60,6 +60,10 @@
           <artifactId>jsr311-api</artifactId>
         </exclusion>
         <exclusion>
+          <groupId>javax.ws.rs</groupId>
+          <artifactId>javax.ws.rs-api</artifactId>
+        </exclusion>
+        <exclusion>
           <groupId>org.codehaus.woodstox</groupId>
           <artifactId>woodstox-core-asl</artifactId>
         </exclusion>
diff --git a/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/CustomExceptionMapperTest.java b/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/CustomExceptionMapperTest.java
index 697fe8c..c7dbc59 100644
--- a/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/CustomExceptionMapperTest.java
+++ b/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/CustomExceptionMapperTest.java
@@ -38,7 +38,8 @@
 public class CustomExceptionMapperTest {
     private static EJBContainer container;
 
-    @BeforeClass public static void start() throws Exception {
+    @BeforeClass
+    public static void start() throws Exception {
         final Properties properties = new Properties();
         properties.setProperty(DeploymentFilterable.CLASSPATH_INCLUDE, ".*openejb-cxf-rs.*");
         properties.setProperty(OpenEjbContainer.OPENEJB_EMBEDDED_REMOTABLE, "true");
@@ -46,13 +47,15 @@
         container = EJBContainer.createEJBContainer(properties);
     }
 
-    @AfterClass public static void close() throws Exception {
+    @AfterClass
+    public static void close() throws Exception {
         if (container != null) {
             container.close();
         }
     }
 
-    @Test public void exceptionMapper() {
+    @Test
+    public void exceptionMapper() {
         final String response = WebClient.create("http://localhost:4204/openejb-cxf-rs")
                 .path("/exception-mapper/throw").get(String.class);
         assertEquals(FooException.class.getName(), response);
diff --git a/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/CustomProviderTest.java b/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/CustomProviderTest.java
index 789b8d1..6b79e35 100644
--- a/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/CustomProviderTest.java
+++ b/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/CustomProviderTest.java
@@ -45,7 +45,8 @@
 public class CustomProviderTest {
     private static EJBContainer container;
 
-    @BeforeClass public static void start() throws Exception {
+    @BeforeClass
+    public static void start() throws Exception {
         final Properties properties = new Properties();
         properties.setProperty(DeploymentFilterable.CLASSPATH_INCLUDE, ".*openejb-cxf-rs.*");
         properties.setProperty(OpenEjbContainer.OPENEJB_EMBEDDED_REMOTABLE, "true");
@@ -53,28 +54,34 @@
         container = EJBContainer.createEJBContainer(properties);
     }
 
-    @AfterClass public static void close() throws Exception {
+    @AfterClass
+    public static void close() throws Exception {
         if (container != null) {
             container.close();
         }
     }
 
-    @Test public void customProvider() {
+    @Test
+    public void customProvider() {
         String response = WebClient.create("http://localhost:4204/openejb-cxf-rs").accept("openejb/reverse")
-            .path("/custom1/reverse").get(String.class);
+                .path("/custom1/reverse").get(String.class);
         assertEquals("provider", response);
     }
 
-    @Test public void customSpecificProvider() {
+    @Test
+    public void customSpecificProvider() {
         String response = WebClient.create("http://localhost:4204/openejb-cxf-rs").accept("openejb/constant")
-            .path("/custom2/constant").get(String.class);
+                .path("/custom2/constant").get(String.class);
         assertEquals("it works!", response);
     }
 
     @Singleton
     @Path("/custom1")
     public static class CustomService {
-        @GET @Path("/reverse") @Produces("openejb/reverse") public String go() {
+        @GET
+        @Path("/reverse")
+        @Produces("openejb/reverse")
+        public String go() {
             return "redivorp";
         }
     }
@@ -82,7 +89,10 @@
     @Singleton
     @Path("/custom2")
     public static class CustomSpecificService {
-        @GET @Path("/constant") @Produces("openejb/constant") public String go() {
+        @GET
+        @Path("/constant")
+        @Produces("openejb/constant")
+        public String go() {
             return "will be overriden";
         }
     }
diff --git a/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/EjbDeploymentTest.java b/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/EjbDeploymentTest.java
index 5b02790..69a5b4e 100644
--- a/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/EjbDeploymentTest.java
+++ b/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/EjbDeploymentTest.java
@@ -42,7 +42,8 @@
     private static EJBContainer container;

     private static RESTIsCool service;

 

-    @BeforeClass public static void start() throws Exception {

+    @BeforeClass

+    public static void start() throws Exception {

         Properties properties = new Properties();

         properties.setProperty(DeploymentFilterable.CLASSPATH_INCLUDE, ".*openejb-cxf-rs.*");

         properties.setProperty(OpenEjbContainer.OPENEJB_EMBEDDED_REMOTABLE, "true");

@@ -50,23 +51,27 @@
         service = (RESTIsCool) container.getContext().lookup("java:/global/openejb-cxf-rs/RESTIsCool");

     }

 

-    @AfterClass public static void close() throws Exception {

+    @AfterClass

+    public static void close() throws Exception {

         if (container != null) {

             container.close();

         }

     }

 

-    @Test public void normal() {

+    @Test

+    public void normal() {

         assertNotNull(service);

         assertEquals("ok", service.normal());

     }

 

-    @Test public void rest() {

+    @Test

+    public void rest() {

         String response = WebClient.create("http://localhost:4204/openejb-cxf-rs").path("/ejb/rest").get(String.class);

         assertEquals("ok", response);

     }

 

-    @Test public void restParameterInjected() {

+    @Test

+    public void restParameterInjected() {

         String response = WebClient.create("http://localhost:4204/openejb-cxf-rs").path("/ejb/param").get(String.class);

         assertEquals("true", response);

 

@@ -74,7 +79,8 @@
         assertEquals("foo", response);

     }

 

-    @Test public void restFieldInjected() {

+    @Test

+    public void restFieldInjected() {

         Boolean response = WebClient.create("http://localhost:4204/openejb-cxf-rs").path("/ejb/field").get(Boolean.class);

         assertEquals(true, response.booleanValue());

     }

@@ -82,22 +88,32 @@
     @Stateless

     @Path("/ejb")

     public static class RESTIsCool {

-        @EJB private SimpleEJB simpleEJB;

-        @javax.ws.rs.core.Context Request request;

+        @EJB

+        private SimpleEJB simpleEJB;

+        @javax.ws.rs.core.Context

+        Request request;

 

-        @Path("/normal") @GET public String normal() {

+        @Path("/normal")

+        @GET

+        public String normal() {

             return simpleEJB.ok();

         }

 

-        @Path("/rest") @GET public String rest() {

+        @Path("/rest")

+        @GET

+        public String rest() {

             return simpleEJB.ok();

         }

 

-        @Path("/param") @GET public String param(@QueryParam("arg") @DefaultValue("true") String p) {

+        @Path("/param")

+        @GET

+        public String param(@QueryParam("arg") @DefaultValue("true") String p) {

             return p;

         }

 

-        @Path("/field") @GET public boolean field() {

+        @Path("/field")

+        @GET

+        public boolean field() {

             return "GET".equals(request.getMethod());

         }

     }

diff --git a/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/PathParamAtClassLevelTest.java b/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/PathParamAtClassLevelTest.java
index 6db924a..4486546 100644
--- a/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/PathParamAtClassLevelTest.java
+++ b/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/PathParamAtClassLevelTest.java
@@ -17,44 +17,42 @@
 

 package org.apache.openejb.server.cxf.rs;

 

-import java.util.Properties;

-import javax.ejb.EJB;

-import javax.ejb.Stateless;

-import javax.ejb.embeddable.EJBContainer;

-import javax.ws.rs.DefaultValue;

-import javax.ws.rs.GET;

-import javax.ws.rs.Path;

-import javax.ws.rs.PathParam;

-import javax.ws.rs.QueryParam;

-import javax.ws.rs.core.Request;

 import org.apache.cxf.jaxrs.client.WebClient;

 import org.apache.openejb.OpenEjbContainer;

 import org.apache.openejb.config.DeploymentFilterable;

-import org.apache.openejb.server.cxf.rs.beans.SimpleEJB;

 import org.junit.AfterClass;

 import org.junit.BeforeClass;

 import org.junit.Test;

 

+import javax.ejb.Stateless;

+import javax.ejb.embeddable.EJBContainer;

+import javax.ws.rs.GET;

+import javax.ws.rs.Path;

+import javax.ws.rs.PathParam;

+import java.util.Properties;

+

 import static junit.framework.Assert.assertEquals;

-import static junit.framework.Assert.assertNotNull;

 

 public class PathParamAtClassLevelTest {

     private static EJBContainer container;

 

-    @BeforeClass public static void start() throws Exception {

+    @BeforeClass

+    public static void start() throws Exception {

         Properties properties = new Properties();

         properties.setProperty(DeploymentFilterable.CLASSPATH_INCLUDE, ".*openejb-cxf-rs.*");

         properties.setProperty(OpenEjbContainer.OPENEJB_EMBEDDED_REMOTABLE, "true");

         container = EJBContainer.createEJBContainer(properties);

     }

 

-    @AfterClass public static void close() throws Exception {

+    @AfterClass

+    public static void close() throws Exception {

         if (container != null) {

             container.close();

         }

     }

 

-    @Test public void rest() {

+    @Test

+    public void rest() {

         String response = WebClient.create("http://localhost:4204/openejb-cxf-rs").path("/match/openejb/test/normal").get(String.class);

         assertEquals("openejb", response);

     }

@@ -62,7 +60,9 @@
     @Stateless

     @Path("/match/{name}/test")

     public static class DoesItMatchWithPathParamAtClassLevel {

-        @Path("/normal") @GET public String normal(@PathParam("name") String name) {

+        @Path("/normal")

+        @GET

+        public String normal(@PathParam("name") String name) {

             return name;

         }

     }

diff --git a/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RestDeploymentTest.java b/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RestDeploymentTest.java
index fc2d34c..8cf82ed 100644
--- a/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RestDeploymentTest.java
+++ b/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RestDeploymentTest.java
@@ -78,7 +78,8 @@
     private static ServiceDaemon daemon;
     public static final String BASE_URL = "http://localhost:4204/my-web-app/my-app";
 
-    @BeforeClass public static void start() throws Exception {
+    @BeforeClass
+    public static void start() throws Exception {
         WebApp webApp = new WebApp();
         webApp.setContextRoot("/my-web-app");
         webApp.setId("web");
@@ -116,7 +117,8 @@
         final AppContext application = assembler.createApplication(appInfo);
 
         Context ctx = (Context) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), new Class<?>[]{Context.class}, new InvocationHandler() {
-            @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+            @Override
+            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                 if (args.length == 1 && args[0].equals("SimpleEJBLocalBean")) {
                     return new SimpleEJB();
                 }
@@ -154,7 +156,8 @@
         service.start();
     }
 
-    @AfterClass public static void close() throws ServiceException {
+    @AfterClass
+    public static void close() throws ServiceException {
         if (service != null) {
             service.stop();
         }
@@ -166,17 +169,20 @@
         }
     }
 
-    @Test public void first() {
+    @Test
+    public void first() {
         String hi = WebClient.create(BASE_URL).path("/first/hi").get(String.class);
         assertEquals("Hi from REST World!", hi);
     }
 
-    @Test public void second() {
+    @Test
+    public void second() {
         String hi = WebClient.create(BASE_URL).path("/second/hi2/2nd").get(String.class);
         assertEquals("hi 2nd", hi);
     }
 
-    @Test public void expert() throws Exception {
+    @Test
+    public void expert() throws Exception {
         Response response = WebClient.create(BASE_URL).path("/expert/still-hi").post("Pink Floyd");
         assertEquals(HttpServletResponse.SC_OK, response.getStatus());
 
@@ -191,15 +197,18 @@
         assertEquals("hi Pink Floyd", writer.toString());
     }
 
-    @Test public void nonListed() { // default handler from openejb-http
+    @Test
+    public void nonListed() { // default handler from openejb-http
         assertEquals("", WebClient.create(BASE_URL).path("/non-listed/yata/foo").get(String.class));
     }
 
-    @Test public void hooked() {
+    @Test
+    public void hooked() {
         assertEquals(true, WebClient.create(BASE_URL).path("/hooked/post").get(Boolean.class).booleanValue());
     }
 
-    @Test public void injectEjb() {
+    @Test
+    public void injectEjb() {
         assertEquals(true, WebClient.create(BASE_URL).path("/inject/ejb").get(Boolean.class).booleanValue());
     }
 }
diff --git a/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/beans/RestWithInjections.java b/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/beans/RestWithInjections.java
index a531404..1b44b2a 100644
--- a/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/beans/RestWithInjections.java
+++ b/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/beans/RestWithInjections.java
@@ -24,10 +24,14 @@
 
 @Path("/inject")
 public class RestWithInjections {
-    @EJB private SimpleEJB simple;
-    @Context UriInfo uriInfo;
+    @EJB
+    private SimpleEJB simple;
+    @Context
+    UriInfo uriInfo;
 
-    @Path("/ejb") @GET public boolean ejb() {
+    @Path("/ejb")
+    @GET
+    public boolean ejb() {
         return simple != null && "ok".equals(simple.ok()) && uriInfo != null;
     }
 }
diff --git a/server/openejb-cxf-transport/pom.xml b/server/openejb-cxf-transport/pom.xml
index db8ab62..9c1085b 100644
--- a/server/openejb-cxf-transport/pom.xml
+++ b/server/openejb-cxf-transport/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/server/openejb-cxf-transport/src/main/java/org/apache/openejb/server/cxf/transport/HttpDestination.java b/server/openejb-cxf-transport/src/main/java/org/apache/openejb/server/cxf/transport/HttpDestination.java
index 701f26a..0337618 100644
--- a/server/openejb-cxf-transport/src/main/java/org/apache/openejb/server/cxf/transport/HttpDestination.java
+++ b/server/openejb-cxf-transport/src/main/java/org/apache/openejb/server/cxf/transport/HttpDestination.java
@@ -21,12 +21,7 @@
 import org.apache.cxf.service.model.EndpointInfo;
 import org.apache.cxf.transport.http.AbstractHTTPDestination;
 import org.apache.cxf.transport.http.DestinationRegistry;
-import org.apache.openejb.server.httpd.HttpRequest;
-import org.apache.openejb.server.httpd.HttpResponse;
 
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.logging.Logger;
 
@@ -35,7 +30,8 @@
         super(bus, registry, endpointInfo, path, true);
     }
 
-    @Override public Logger getLogger() {
+    @Override
+    public Logger getLogger() {
         return Logger.getLogger(HttpDestination.class.getName());
     }
 }
diff --git a/server/openejb-cxf-transport/src/main/java/org/apache/openejb/server/cxf/transport/HttpTransportFactory.java b/server/openejb-cxf-transport/src/main/java/org/apache/openejb/server/cxf/transport/HttpTransportFactory.java
index abe0df5..e731ec0 100644
--- a/server/openejb-cxf-transport/src/main/java/org/apache/openejb/server/cxf/transport/HttpTransportFactory.java
+++ b/server/openejb-cxf-transport/src/main/java/org/apache/openejb/server/cxf/transport/HttpTransportFactory.java
@@ -26,15 +26,16 @@
 
 public class HttpTransportFactory extends HTTPTransportFactory {
     public HttpTransportFactory() {
-    	// no-op
+        // no-op
     }
-  
+
     public HttpTransportFactory(Bus bus) {
         setBus(bus);
 
     }
 
-    @Override public Destination getDestination(EndpointInfo endpointInfo) throws IOException {
+    @Override
+    public Destination getDestination(EndpointInfo endpointInfo) throws IOException {
         return new HttpDestination(getBus(), getRegistry(), endpointInfo, endpointInfo.getAddress());
     }
 }
diff --git a/server/openejb-cxf-transport/src/main/java/org/apache/openejb/server/cxf/transport/util/CxfUtil.java b/server/openejb-cxf-transport/src/main/java/org/apache/openejb/server/cxf/transport/util/CxfUtil.java
index 78d8e87..720bf26 100644
--- a/server/openejb-cxf-transport/src/main/java/org/apache/openejb/server/cxf/transport/util/CxfUtil.java
+++ b/server/openejb-cxf-transport/src/main/java/org/apache/openejb/server/cxf/transport/util/CxfUtil.java
@@ -147,14 +147,14 @@
         }
     }
 
-    private static List<Feature> createFeatures(final Collection<ServiceInfo> availableServices, final String featuresIds) {
+    private static List<AbstractFeature> createFeatures(final Collection<ServiceInfo> availableServices, final String featuresIds) {
         final List<?> features = ServiceInfos.resolve(availableServices, featuresIds.split(","));
         for (Object instance : features) {
-            if (!Feature.class.isInstance(instance)) {
+            if (!AbstractFeature.class.isInstance(instance)) {
                 throw new OpenEJBRuntimeException("feature should inherit from " + AbstractFeature.class.getName());
             }
         }
-        return (List<Feature>) features;
+        return (List<AbstractFeature>) features;
     }
 
     private static List<Interceptor<? extends Message>> createInterceptors(final Collection<ServiceInfo> availableServices, final String ids) {
@@ -186,7 +186,7 @@
 
             final String featuresIds = properties.getProperty(BUS_PREFIX + FEATURES);
             if (featuresIds != null) {
-                final List<Feature> features = createFeatures(serviceInfos, featuresIds);
+                final List<AbstractFeature> features = createFeatures(serviceInfos, featuresIds);
                 if (features != null) {
                     features.addAll(busImpl.getFeatures());
                     busImpl.setFeatures(features);
diff --git a/server/openejb-cxf/pom.xml b/server/openejb-cxf/pom.xml
index 15ad8b3..36a2bab 100644
--- a/server/openejb-cxf/pom.xml
+++ b/server/openejb-cxf/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-cxf</artifactId>
diff --git a/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/OpenEJBLoginValidator.java b/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/OpenEJBLoginValidator.java
index 21394b3..ee8207f 100644
--- a/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/OpenEJBLoginValidator.java
+++ b/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/OpenEJBLoginValidator.java
@@ -25,13 +25,12 @@
 import org.apache.ws.security.validate.UsernameTokenValidator;
 
 import javax.security.auth.callback.Callback;
-import javax.security.auth.callback.UnsupportedCallbackException;
 import javax.security.auth.login.LoginException;
-import java.io.IOException;
 
 public class OpenEJBLoginValidator extends UsernameTokenValidator {
-    @Override protected void verifyDigestPassword(UsernameToken usernameToken,
-                                           RequestData data) throws WSSecurityException {
+    @Override
+    protected void verifyDigestPassword(UsernameToken usernameToken,
+                                        RequestData data) throws WSSecurityException {
         // check password
         super.verifyDigestPassword(usernameToken, data);
 
diff --git a/server/openejb-cxf/src/test/java/org/apache/openejb/server/cxf/WebServiceWithAnUserInterceptorTest.java b/server/openejb-cxf/src/test/java/org/apache/openejb/server/cxf/WebServiceWithAnUserInterceptorTest.java
index db7d5bc..a8fca38 100644
--- a/server/openejb-cxf/src/test/java/org/apache/openejb/server/cxf/WebServiceWithAnUserInterceptorTest.java
+++ b/server/openejb-cxf/src/test/java/org/apache/openejb/server/cxf/WebServiceWithAnUserInterceptorTest.java
@@ -40,7 +40,8 @@
 public class WebServiceWithAnUserInterceptorTest {
     private static EJBContainer container;
 
-    @BeforeClass public static void start() {
+    @BeforeClass
+    public static void start() {
         final Properties properties = new Properties();
         properties.setProperty(DeploymentFilterable.CLASSPATH_INCLUDE, ".*openejb-cxf.*");
         properties.setProperty(OpenEjbContainer.OPENEJB_EMBEDDED_REMOTABLE, "true");
@@ -48,11 +49,13 @@
         container = EJBContainer.createEJBContainer(properties);
     }
 
-    @AfterClass public static void close() {
+    @AfterClass
+    public static void close() {
         container.close();
     }
 
-    @Test public void test() throws Exception {
+    @Test
+    public void test() throws Exception {
         Foo foo = Service.create(
                 new URL("http://localhost:4204/openejb-cxf/FooImpl?wsdl"),
                 new QName("http://cxf.server.openejb.apache.org/", "FooImplService"))
@@ -63,7 +66,7 @@
 
     @WebService
     @Stateless
-    @Interceptors({ BarInterceptor.class })
+    @Interceptors({BarInterceptor.class})
     public static class FooImpl implements Foo {
         public String hi() {
             return "foo";
@@ -76,7 +79,8 @@
     }
 
     public static class BarInterceptor {
-        @AroundInvoke public Object around(InvocationContext ic) throws Exception {
+        @AroundInvoke
+        public Object around(InvocationContext ic) throws Exception {
             return "bar";
         }
     }
diff --git a/server/openejb-daemon/pom.xml b/server/openejb-daemon/pom.xml
index c867ec5..ddccac4 100644
--- a/server/openejb-daemon/pom.xml
+++ b/server/openejb-daemon/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-daemon</artifactId>
diff --git a/server/openejb-derbynet/pom.xml b/server/openejb-derbynet/pom.xml
index 9f76c48..340b95a 100644
--- a/server/openejb-derbynet/pom.xml
+++ b/server/openejb-derbynet/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-derbynet</artifactId>
diff --git a/server/openejb-ejbd/pom.xml b/server/openejb-ejbd/pom.xml
index 26d2a8a..2eba799 100644
--- a/server/openejb-ejbd/pom.xml
+++ b/server/openejb-ejbd/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-ejbd</artifactId>
diff --git a/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java b/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java
index 8f9b4e2..2e8ae19 100644
--- a/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java
+++ b/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java
@@ -20,6 +20,7 @@
 import org.apache.openejb.ProxyInfo;
 import org.apache.openejb.client.EJBRequest;
 import org.apache.openejb.client.EjbObjectInputStream;
+import org.apache.openejb.client.FlushableGZIPOutputStream;
 import org.apache.openejb.client.ProtocolMetaData;
 import org.apache.openejb.client.RequestType;
 import org.apache.openejb.client.ServerMetaData;
@@ -28,8 +29,9 @@
 import org.apache.openejb.spi.ContainerSystem;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
-import org.apache.openejb.util.Messages;
 
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.ObjectInputStream;
@@ -38,12 +40,12 @@
 import java.net.Socket;
 import java.rmi.RemoteException;
 import java.util.Properties;
+import java.util.zip.GZIPInputStream;
 
 public class EjbDaemon implements org.apache.openejb.spi.ApplicationServer {
 
     private static final ProtocolMetaData PROTOCOL_VERSION = new ProtocolMetaData("3.1");
 
-    private static final Messages _messages = new Messages("org.apache.openejb.server.util.resources");
     static final Logger logger = Logger.getInstance(LogCategory.OPENEJB_SERVER_REMOTE, "org.apache.openejb.server.util.resources");
 
     private ClientObjectFactory clientObjectFactory;
@@ -53,10 +55,10 @@
     private AuthRequestHandler authHandler;
     private ClusterRequestHandler clusterHandler;
 
-    boolean stop = false;
-
     static EjbDaemon instance;
+
     private ContainerSystem containerSystem;
+    private boolean gzip;
 
     private EjbDaemon() {
     }
@@ -78,6 +80,7 @@
         jndiHandler = new JndiRequestHandler(this);
         authHandler = new AuthRequestHandler(this);
         clusterHandler = new ClusterRequestHandler(this);
+        gzip = "true".equalsIgnoreCase(props.getProperty("gzip", "false"));
 
         DiscoveryAgent discovery = SystemInstance.get().getComponent(DiscoveryAgent.class);
         if (discovery != null) {
@@ -96,8 +99,12 @@
                 return;
             }
 
-            in = socket.getInputStream();
-            out = socket.getOutputStream();
+            in = new BufferedInputStream(socket.getInputStream());
+            out = new BufferedOutputStream(socket.getOutputStream());
+            if (gzip) {
+                in = new GZIPInputStream(new BufferedInputStream(socket.getInputStream()));
+                out = new BufferedOutputStream(new FlushableGZIPOutputStream(socket.getOutputStream()));
+            }
 
             service(in, out);
         } finally {
@@ -292,5 +299,8 @@
         return clientObjectFactory.getEJBHome(info);
     }
 
+    public boolean isGzip() {
+        return gzip;
+    }
 }
 
diff --git a/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbServer.java b/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbServer.java
index 8234fa7..3c0297e 100644
--- a/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbServer.java
+++ b/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbServer.java
@@ -33,17 +33,18 @@
 
 public class EjbServer implements org.apache.openejb.server.ServerService, org.apache.openejb.spi.ApplicationServer {
 
-    private final KeepAliveServer keepAlive;
-    private EjbDaemon server;
+    protected KeepAliveServer keepAlive;
+    protected EjbDaemon server;
 
     public EjbServer() {
-        keepAlive = new KeepAliveServer(this);
+
     }
 
     @Override
     public void init(final Properties props) throws Exception {
         server = EjbDaemon.getEjbDaemon();
         server.init(props);
+        keepAlive = new KeepAliveServer(this, server.isGzip());
     }
 
     @Override
diff --git a/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/KeepAliveServer.java b/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/KeepAliveServer.java
index d4631ff..8840a6b 100644
--- a/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/KeepAliveServer.java
+++ b/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/KeepAliveServer.java
@@ -16,6 +16,7 @@
  */
 package org.apache.openejb.server.ejbd;
 
+import org.apache.openejb.client.FlushableGZIPOutputStream;
 import org.apache.openejb.client.KeepAliveStyle;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.server.ServerService;
@@ -43,6 +44,7 @@
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
+import java.util.zip.GZIPInputStream;
 
 /**
  * @version $Rev$ $Date$
@@ -57,13 +59,20 @@
     private final ConcurrentHashMap<Thread, Session> sessions = new ConcurrentHashMap<Thread, Session>();
     private BlockingQueue<Runnable> threadQueue;
     private Timer timer;
+    private final boolean gzip;
 
     public KeepAliveServer() {
         this(new EjbServer());
     }
 
+    @Deprecated
     public KeepAliveServer(final ServerService service) {
+        this(service, false);
+    }
+
+    public KeepAliveServer(final ServerService service, final boolean gzip) {
         this.service = service;
+        this.gzip = gzip;
     }
 
     private void closeInactiveSessions() {
@@ -195,8 +204,15 @@
             int i = -1;
 
             try {
-                final InputStream in = new BufferedInputStream(socket.getInputStream());
-                final OutputStream out = new BufferedOutputStream(socket.getOutputStream());
+                final InputStream in;
+                final OutputStream out;
+                if (!gzip) {
+                    in = new BufferedInputStream(socket.getInputStream());
+                    out = new BufferedOutputStream(socket.getOutputStream());
+                } else {
+                    in = new GZIPInputStream(new BufferedInputStream(socket.getInputStream()));
+                    out = new BufferedOutputStream(new FlushableGZIPOutputStream(socket.getOutputStream()));
+                }
 
                 while (running.get()) {
                     try {
diff --git a/server/openejb-ejbd/src/main/resources/META-INF/org.apache.openejb.server.ServerService/ejbd b/server/openejb-ejbd/src/main/resources/META-INF/org.apache.openejb.server.ServerService/ejbd
index 6891a6c..bcb2030 100644
--- a/server/openejb-ejbd/src/main/resources/META-INF/org.apache.openejb.server.ServerService/ejbd
+++ b/server/openejb-ejbd/src/main/resources/META-INF/org.apache.openejb.server.ServerService/ejbd
@@ -5,3 +5,4 @@
 threads     = 200
 backlog     = 200
 discovery   = ejb:ejbd://{bind}:{port}
+gzip        = false
diff --git a/server/openejb-ejbd/src/main/resources/META-INF/org.apache.openejb.server.ServerService/ejbds b/server/openejb-ejbd/src/main/resources/META-INF/org.apache.openejb.server.ServerService/ejbds
index 9e87e5a..c2a26d2 100644
--- a/server/openejb-ejbd/src/main/resources/META-INF/org.apache.openejb.server.ServerService/ejbds
+++ b/server/openejb-ejbd/src/main/resources/META-INF/org.apache.openejb.server.ServerService/ejbds
@@ -6,3 +6,4 @@
 backlog     = 200
 secure      = true
 discovery   = ejb:ejbds://{bind}:{port}
+gzip        = false
diff --git a/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/ZEjbdTest.java b/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/ZEjbdTest.java
new file mode 100644
index 0000000..06d11db
--- /dev/null
+++ b/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/ZEjbdTest.java
@@ -0,0 +1,75 @@
+/**
+ * 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.openejb.server.ejbd;
+
+import org.apache.openejb.client.ClientRuntimeException;
+import org.apache.openejb.client.RemoteInitialContextFactory;
+import org.apache.openejb.jee.EnterpriseBean;
+import org.apache.openejb.jee.SingletonBean;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.junit.Configuration;
+import org.apache.openejb.junit.EnableServices;
+import org.apache.openejb.junit.Module;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import java.util.Properties;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+@EnableServices("ejbd")
+@RunWith(ApplicationComposer.class)
+public class ZEjbdTest {
+    @Configuration
+    public Properties configuration() {
+        final Properties configuration = new Properties();
+        configuration.setProperty("ejbd.gzip", "true");
+        return configuration;
+    }
+
+    @Module
+    public EnterpriseBean bean() {
+        return new SingletonBean(AppClientTest.Orange.class).localBean();
+    }
+
+    @Test
+    public void checkZipIsOn() throws Exception {
+        assertTrue(EjbDaemon.getEjbDaemon().isGzip());
+    }
+
+    @Test
+    public void checkItWorks() throws Exception {
+        remoteCall("zejbd");
+    }
+
+    @Test(expected = ClientRuntimeException.class)
+    public void checkEjbdFailWithAGzipServer() throws Exception {
+        remoteCall("ejbd");
+    }
+
+    private void remoteCall(final String scheme) throws NamingException {
+        final Context ctx = new InitialContext(new Properties() {{
+            setProperty(Context.INITIAL_CONTEXT_FACTORY, RemoteInitialContextFactory.class.getName());
+            setProperty(Context.PROVIDER_URL, scheme + "://localhost:4201");
+        }});
+        assertEquals("hello", ((AppClientTest.OrangeBusinessRemote) ctx.lookup("OrangeRemote")).echo("olleh"));
+    }
+}
diff --git a/server/openejb-hsql/pom.xml b/server/openejb-hsql/pom.xml
index b8cce93..5f4f3fd 100644
--- a/server/openejb-hsql/pom.xml
+++ b/server/openejb-hsql/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-hsql</artifactId>
diff --git a/server/openejb-http/pom.xml b/server/openejb-http/pom.xml
index 08e122f..fc6d357 100644
--- a/server/openejb-http/pom.xml
+++ b/server/openejb-http/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-http</artifactId>
diff --git a/server/openejb-multicast/pom.xml b/server/openejb-multicast/pom.xml
index 9d05cb5..65abee0 100644
--- a/server/openejb-multicast/pom.xml
+++ b/server/openejb-multicast/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-multicast</artifactId>
diff --git a/server/openejb-rest/pom.xml b/server/openejb-rest/pom.xml
index 19be96c..3df3a63 100644
--- a/server/openejb-rest/pom.xml
+++ b/server/openejb-rest/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java b/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java
index 13efa5e..c7415c5 100644
--- a/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java
+++ b/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java
@@ -193,10 +193,10 @@
 
                     if (hasEjbAndIsNotAManagedBean(restEjbs, o.getClass().getName())) {
                         // no more a singleton if the ejb is not a singleton...but it is a weird case
-                        deployEJB(appPrefix, restEjbs.get(o.getClass().getName()).context, additionalProviders, appInfo.services);
+                        deployEJB(webApp.contextRoot, appPrefix, restEjbs.get(o.getClass().getName()).context, additionalProviders, appInfo.services);
                     } else {
                         pojoConfigurations = PojoUtil.findPojoConfig(pojoConfigurations, appInfo, webApp);
-                        deploySingleton(appPrefix, o, appInstance, classLoader, additionalProviders,
+                        deploySingleton(webApp.contextRoot, appPrefix, o, appInstance, classLoader, additionalProviders,
                                 new ServiceConfiguration(PojoUtil.findConfiguration(pojoConfigurations, o.getClass().getName()), appInfo.services));
                     }
                 }
@@ -207,10 +207,10 @@
                     }
 
                     if (hasEjbAndIsNotAManagedBean(restEjbs, clazz.getName())) {
-                        deployEJB(appPrefix, restEjbs.get(clazz.getName()).context, additionalProviders, appInfo.services);
+                        deployEJB(webApp.contextRoot, appPrefix, restEjbs.get(clazz.getName()).context, additionalProviders, appInfo.services);
                     } else {
                         pojoConfigurations = PojoUtil.findPojoConfig(pojoConfigurations, appInfo, webApp);
-                        deployPojo(appPrefix, clazz, appInstance, classLoader, injections, context, owbCtx, additionalProviders,
+                        deployPojo(webApp.contextRoot, appPrefix, clazz, appInstance, classLoader, injections, context, owbCtx, additionalProviders,
                                 new ServiceConfiguration(PojoUtil.findConfiguration(pojoConfigurations, clazz.getName()), appInfo.services));
                     }
                 }
@@ -220,6 +220,10 @@
             }
 
             if (!useApp) {
+                if (webApp.restApplications.isEmpty() || webApp.restApplications.size() > 1) {
+                    appPrefix = webApp.contextRoot;
+                } // else keep application prefix
+
                 final Set<String> restClasses = new HashSet<String>(webApp.restClass);
                 restClasses.addAll(webApp.ejbRestServices);
 
@@ -227,16 +231,16 @@
                     if (restEjbs.containsKey(clazz)) {
                         final BeanContext ctx = restEjbs.get(clazz).context;
                         if (hasEjbAndIsNotAManagedBean(restEjbs, clazz)) {
-                            deployEJB(appPrefix, restEjbs.get(clazz).context, additionalProviders, appInfo.services);
+                            deployEJB(webApp.contextRoot, appPrefix, restEjbs.get(clazz).context, additionalProviders, appInfo.services);
                         } else {
-                            deployPojo(appPrefix, ctx.getBeanClass(), null, ctx.getClassLoader(), ctx.getInjections(), context,
+                            deployPojo(webApp.contextRoot, appPrefix, ctx.getBeanClass(), null, ctx.getClassLoader(), ctx.getInjections(), context,
                                     owbCtx, additionalProviders, new ServiceConfiguration(ctx.getProperties(), appInfo.services));
                         }
                     } else {
                         try {
                             Class<?> loadedClazz = classLoader.loadClass(clazz);
                             pojoConfigurations = PojoUtil.findPojoConfig(pojoConfigurations, appInfo, webApp);
-                            deployPojo(appPrefix, loadedClazz, null, classLoader, injections, context, owbCtx,
+                            deployPojo(webApp.contextRoot, appPrefix, loadedClazz, null, classLoader, injections, context, owbCtx,
                                     additionalProviders,
                                     new ServiceConfiguration(PojoUtil.findConfiguration(pojoConfigurations, loadedClazz.getName()), appInfo.services));
                         } catch (ClassNotFoundException e) {
@@ -293,12 +297,12 @@
                 for (Map.Entry<String, EJBRestServiceInfo> ejb : restEjbs.entrySet()) {
                     final BeanContext ctx = ejb.getValue().context;
                     if (BeanType.MANAGED.equals(ctx.getComponentType())) {
-                        deployPojo(ejb.getValue().path, ctx.getBeanClass(), null, ctx.getClassLoader(), ctx.getInjections(),
+                        deployPojo("", ejb.getValue().path, ctx.getBeanClass(), null, ctx.getClassLoader(), ctx.getInjections(),
                                 ctx.getJndiContext(),
                                 containerSystem.getAppContext(appInfo.appId).getWebBeansContext(),
                                 providers, new ServiceConfiguration(ctx.getProperties(), appInfo.services));
                     } else {
-                        deployEJB(ejb.getValue().path, ctx, providers, appInfo.services);
+                        deployEJB("", ejb.getValue().path, ctx, providers, appInfo.services);
                     }
                 }
                 restEjbs.clear();
@@ -310,7 +314,7 @@
         }
     }
 
-    protected Map<String,EJBRestServiceInfo> getRestEjbs(AppInfo appInfo) {
+    protected Map<String, EJBRestServiceInfo> getRestEjbs(AppInfo appInfo) {
         Map<String, BeanContext> beanContexts = new HashMap<String, BeanContext>();
         for (EjbJarInfo ejbJar : appInfo.ejbJars) {
             for (EnterpriseBeanInfo bean : ejbJar.enterpriseBeans) {
@@ -351,19 +355,19 @@
         return restEjbs;
     }
 
-    private void deploySingleton(String contextRoot, Object o, Application appInstance, ClassLoader classLoader,
+    private void deploySingleton(String web, String contextRoot, Object o, Application appInstance, ClassLoader classLoader,
                                  Collection<Object> additionalProviders, ServiceConfiguration configuration) {
         final String nopath = getAddress(contextRoot, o.getClass());
         final RsHttpListener listener = createHttpListener();
-        final RsRegistry.AddressInfo address = rsRegistry.createRsHttpListener(contextRoot, listener, classLoader, nopath.substring(NOPATH_PREFIX.length() - 1), virtualHost);
+        final RsRegistry.AddressInfo address = rsRegistry.createRsHttpListener(web, listener, classLoader, nopath.substring(NOPATH_PREFIX.length() - 1), virtualHost);
 
-        services.add(new DeployedService(address.complete, contextRoot, o.getClass().getName()));
+        services.add(new DeployedService(address.complete, web, o.getClass().getName()));
         listener.deploySingleton(getFullContext(address.base, contextRoot), o, appInstance, additionalProviders, configuration);
 
         LOGGER.info("deployed REST singleton: " + o);
     }
 
-    private void deployPojo(String contextRoot, Class<?> loadedClazz, Application app, ClassLoader classLoader, Collection<Injection> injections,
+    private void deployPojo(String web, String contextRoot, Class<?> loadedClazz, Application app, ClassLoader classLoader, Collection<Injection> injections,
                             Context context, WebBeansContext owbCtx, Collection<Object> additionalProviders, ServiceConfiguration config) {
         if (loadedClazz.isInterface()) {
             return;
@@ -371,7 +375,7 @@
 
         final String nopath = getAddress(contextRoot, loadedClazz);
         final RsHttpListener listener = createHttpListener();
-        final RsRegistry.AddressInfo address = rsRegistry.createRsHttpListener(contextRoot, listener, classLoader, nopath.substring(NOPATH_PREFIX.length() - 1), virtualHost);
+        final RsRegistry.AddressInfo address = rsRegistry.createRsHttpListener(web, listener, classLoader, nopath.substring(NOPATH_PREFIX.length() - 1), virtualHost);
 
         services.add(new DeployedService(address.complete, contextRoot, loadedClazz.getName()));
         listener.deployPojo(getFullContext(address.base, contextRoot), loadedClazz, app, injections, context, owbCtx,
@@ -380,10 +384,10 @@
         LOGGER.info("REST Service: " + address.complete + "  -> Pojo " + loadedClazz.getName());
     }
 
-    private void deployEJB(String context, BeanContext beanContext, Collection<Object> additionalProviders, Collection<ServiceInfo> serviceInfos) {
+    private void deployEJB(String web, String context, BeanContext beanContext, Collection<Object> additionalProviders, Collection<ServiceInfo> serviceInfos) {
         final String nopath = getAddress(context, beanContext.getBeanClass());
         final RsHttpListener listener = createHttpListener();
-        final RsRegistry.AddressInfo address = rsRegistry.createRsHttpListener(context, listener, beanContext.getClassLoader(), nopath.substring(NOPATH_PREFIX.length() - 1), virtualHost);
+        final RsRegistry.AddressInfo address = rsRegistry.createRsHttpListener(web, listener, beanContext.getClassLoader(), nopath.substring(NOPATH_PREFIX.length() - 1), virtualHost);
 
         services.add(new DeployedService(address.complete, context, beanContext.getBeanClass().getName()));
         listener.deployEJB(getFullContext(address.base, context), beanContext,
@@ -452,7 +456,7 @@
             if (itfs != null) {
                 for (Class<?> c : itfs) {
                     usedClass = findPath(c);
-                    if (usedClass.getAnnotation(Path.class) != null ) {
+                    if (usedClass.getAnnotation(Path.class) != null) {
                         break;
                     }
                 }
@@ -542,7 +546,8 @@
         }
     }
 
-    @Override public void start() throws ServiceException {
+    @Override
+    public void start() throws ServiceException {
         SystemInstance.get().setComponent(RESTService.class, this);
 
         beforeStart();
@@ -564,7 +569,8 @@
         }
     }
 
-    @Override public void stop() throws ServiceException {
+    @Override
+    public void stop() throws ServiceException {
         if (assembler != null) {
             SystemInstance.get().removeObserver(this);
             for (AppInfo appInfo : new ArrayList<AppInfo>(deployedApplications)) {
@@ -577,23 +583,28 @@
         }
     }
 
-    @Override public void service(InputStream in, OutputStream out) throws ServiceException, IOException {
+    @Override
+    public void service(InputStream in, OutputStream out) throws ServiceException, IOException {
         throw new UnsupportedOperationException(getClass().getName() + " cannot be invoked directly");
     }
 
-    @Override public void service(Socket socket) throws ServiceException, IOException {
+    @Override
+    public void service(Socket socket) throws ServiceException, IOException {
         throw new UnsupportedOperationException(getClass().getName() + " cannot be invoked directly");
     }
 
-    @Override public String getIP() {
+    @Override
+    public String getIP() {
         return IP;
     }
 
-    @Override public int getPort() {
+    @Override
+    public int getPort() {
         return PORT;
     }
 
-    @Override public void init(Properties props) throws Exception {
+    @Override
+    public void init(Properties props) throws Exception {
         virtualHost = props.getProperty("virtualHost");
         enabled = ServiceManager.isEnabled(props);
     }
diff --git a/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistry.java b/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistry.java
index 6c9f381..6914b1b 100644
--- a/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistry.java
+++ b/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistry.java
@@ -22,7 +22,7 @@
 import java.util.List;
 
 public interface RsRegistry {
-    AddressInfo createRsHttpListener(String root, HttpListener listener, ClassLoader classLoader, String path, String virtualHost);
+    AddressInfo createRsHttpListener(String webContext, HttpListener listener, ClassLoader classLoader, String path, String virtualHost);
     HttpListener removeListener(String context);
 
     public static class AddressInfo {
diff --git a/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistryImpl.java b/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistryImpl.java
index 96ce702..b568cd2 100644
--- a/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistryImpl.java
+++ b/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistryImpl.java
@@ -27,7 +27,7 @@
 public class RsRegistryImpl extends OpenEJBHttpRegistry implements RsRegistry {
     private Map<String, String> addresses = new HashMap<String, String>();
 
-    @Override public AddressInfo createRsHttpListener(String root, HttpListener listener, ClassLoader classLoader, String path, String virtualHost) {
+    @Override public AddressInfo createRsHttpListener(String webContext, HttpListener listener, ClassLoader classLoader, String path, String virtualHost) {
         String address = HttpUtil.selectSingleAddress(getResolvedAddresses(path));
         addWrappedHttpListener(listener, classLoader, path);
         addresses.put(address, path);
diff --git a/server/openejb-server/pom.xml b/server/openejb-server/pom.xml
index 4cbd1e8..f94d6bb 100644
--- a/server/openejb-server/pom.xml
+++ b/server/openejb-server/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-server</artifactId>
diff --git a/server/openejb-server/src/main/java/org/apache/openejb/server/FilteredServiceManager.java b/server/openejb-server/src/main/java/org/apache/openejb/server/FilteredServiceManager.java
index cb4004b..6053f98 100644
--- a/server/openejb-server/src/main/java/org/apache/openejb/server/FilteredServiceManager.java
+++ b/server/openejb-server/src/main/java/org/apache/openejb/server/FilteredServiceManager.java
@@ -45,7 +45,7 @@
                 realServices.addAll(Arrays.asList("cxf-rs", "httpejbd"));
             } else if (wsAliases.contains(service)) {
                 realServices.addAll(Arrays.asList("cxf", "httpejbd"));
-            } else if ("ejbd".equals(service)) {
+            } else if ("http".equals(service)) {
                 realServices.add("httpejbd");
             } else {
                 realServices.add(service);
diff --git a/server/openejb-server/src/test/java/org/apache/openejb/server/FilteredServiceManagerTest.java b/server/openejb-server/src/test/java/org/apache/openejb/server/FilteredServiceManagerTest.java
index 4da0a57..1a101a4 100644
--- a/server/openejb-server/src/test/java/org/apache/openejb/server/FilteredServiceManagerTest.java
+++ b/server/openejb-server/src/test/java/org/apache/openejb/server/FilteredServiceManagerTest.java
@@ -37,7 +37,7 @@
 
     @Test
     public void checkEjbd() {
-        final FilteredServiceManager fsm = new FilteredServiceManager(new String[] { "ejbd" });
+        final FilteredServiceManager fsm = new FilteredServiceManager(new String[] { "http" });
         assertTrue(fsm.accept("httpejbd"));
     }
 
diff --git a/server/openejb-ssh/pom.xml b/server/openejb-ssh/pom.xml
index 0b2f49a..536dd77 100644
--- a/server/openejb-ssh/pom.xml
+++ b/server/openejb-ssh/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/server/openejb-webservices/pom.xml b/server/openejb-webservices/pom.xml
index 1e37c46..82f9ac5 100644
--- a/server/openejb-webservices/pom.xml
+++ b/server/openejb-webservices/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-webservices</artifactId>
diff --git a/server/pom.xml b/server/pom.xml
index 0d0bdfc..960b672 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>openejb</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>server</artifactId>
diff --git a/tck/bval-embedded/pom.xml b/tck/bval-embedded/pom.xml
index 5ceb9b9..c0b1c66 100644
--- a/tck/bval-embedded/pom.xml
+++ b/tck/bval-embedded/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>tck</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/tck/bval-tomee/pom.xml b/tck/bval-tomee/pom.xml
index 5857868..cc1b2b0 100644
--- a/tck/bval-tomee/pom.xml
+++ b/tck/bval-tomee/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>tck</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
@@ -66,7 +66,7 @@
       <groupId>org.apache.openejb</groupId>
       <artifactId>apache-tomee</artifactId>
       <type>zip</type>
-      <version>1.5.1-SNAPSHOT</version>
+      <version>1.5.1</version>
       <classifier>webprofile</classifier>
     </dependency>
     <dependency>
diff --git a/tck/cdi-embedded/pom.xml b/tck/cdi-embedded/pom.xml
index adbafcd..a7d6a17 100644
--- a/tck/cdi-embedded/pom.xml
+++ b/tck/cdi-embedded/pom.xml
@@ -19,13 +19,13 @@
   <parent>
     <artifactId>tck</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>cdi-embedded</artifactId>
   <packaging>jar</packaging>
   <name>OpenEJB :: TCK :: CDI Embedded</name>
-  <version>1.5.1-SNAPSHOT</version>
+  <version>1.5.1</version>
 
   <dependencies>
     <dependency>
diff --git a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/RequestScopeTestListener.java b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/RequestScopeTestListener.java
deleted file mode 100644
index 096c0e4..0000000
--- a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/RequestScopeTestListener.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * 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.openejb.tck.cdi.embedded;
-
-import org.apache.openejb.BeanContext;
-import org.apache.openejb.BeanType;
-import org.apache.openejb.core.ThreadContext;
-import org.apache.openejb.loader.SystemInstance;
-import org.apache.openejb.spi.ContainerSystem;
-import org.apache.webbeans.config.WebBeansContext;
-import org.apache.webbeans.spi.ContextsService;
-import org.testng.ITestContext;
-import org.testng.ITestListener;
-import org.testng.ITestResult;
-
-import javax.enterprise.context.RequestScoped;
-
-public class RequestScopeTestListener implements ITestListener {
-
-    private boolean entered = false;
-    private ThreadContext oldContext;
-    private ContextsService contextsService;
-
-    @Override
-    public void onTestStart(ITestResult iTestResult) {
-        entered = true;
-        final ContainerSystem containerSystem = SystemInstance.get().getComponent(ContainerSystem.class);
-
-        if (containerSystem == null) return;
-
-        BeanContext context = null;
-        for (BeanContext beanContext : containerSystem.deployments()) {
-            BeanType beanType = BeanType.MANAGED;
-            if (beanContext.getComponentType() == beanType) {
-                context = beanContext;
-                break;
-            }
-        }
-
-        if (context == null) return;
-
-        final WebBeansContext webBeansContext = context.getModuleContext().getAppContext().getWebBeansContext();
-        contextsService = webBeansContext.getContextsService();
-
-        contextsService.startContext(RequestScoped.class, null);
-    }
-
-    @Override
-    public void onTestSuccess(ITestResult iTestResult) {
-        exit();
-    }
-
-    private void exit() {
-        try {
-            contextsService.endContext(RequestScoped.class, null);
-        } catch (Exception e) {
-        }
-    }
-
-    @Override
-    public void onTestFailure(ITestResult iTestResult) {
-        exit();
-    }
-
-    @Override
-    public void onTestSkipped(ITestResult iTestResult) {
-        exit();
-    }
-
-    @Override
-    public void onTestFailedButWithinSuccessPercentage(ITestResult iTestResult) {
-    }
-
-    @Override
-    public void onStart(ITestContext iTestContext) {
-    }
-
-    @Override
-    public void onFinish(ITestContext iTestContext) {
-    }
-}
diff --git a/tck/cdi-embedded/src/test/resources/passing.xml b/tck/cdi-embedded/src/test/resources/passing.xml
index ca58cd6..842079b 100644
--- a/tck/cdi-embedded/src/test/resources/passing.xml
+++ b/tck/cdi-embedded/src/test/resources/passing.xml
@@ -16,9 +16,6 @@
   limitations under the License.
   -->
 <suite name="CDI TCK" verbose="0">
-  <listeners>
-    <listener class-name="org.apache.openejb.tck.cdi.embedded.RequestScopeTestListener" />
-  </listeners>
   <test name="CDI TCK">
     <packages>
         <package name="org.jboss.jsr299.tck.tests.*"/>
diff --git a/tck/cdi-tomee-embedded/pom.xml b/tck/cdi-tomee-embedded/pom.xml
index 234bda6..3be452a 100644
--- a/tck/cdi-tomee-embedded/pom.xml
+++ b/tck/cdi-tomee-embedded/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>tck</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>cdi-tomee-embedded</artifactId>
@@ -29,7 +29,7 @@
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>tomee-embedded</artifactId>
-      <version>1.5.1-SNAPSHOT</version>
+      <version>1.5.1</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
diff --git a/tck/cdi-tomee/pom.xml b/tck/cdi-tomee/pom.xml
index 603a94c..e8e5b3f 100644
--- a/tck/cdi-tomee/pom.xml
+++ b/tck/cdi-tomee/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>tck</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>cdi-tomee</artifactId>
@@ -58,7 +58,7 @@
       <groupId>org.apache.openejb</groupId>
       <artifactId>apache-tomee</artifactId>
       <type>zip</type>
-      <version>1.5.1-SNAPSHOT</version>
+      <version>1.5.1</version>
       <classifier>webprofile</classifier>
     </dependency>
     <dependency>
diff --git a/tck/cdi-tomee/src/test/resources/passing.xml b/tck/cdi-tomee/src/test/resources/passing.xml
index fb6bc3c..e5dab48 100644
--- a/tck/cdi-tomee/src/test/resources/passing.xml
+++ b/tck/cdi-tomee/src/test/resources/passing.xml
@@ -17,43 +17,8 @@
   -->
 <suite name="CDI TCK" verbose="0">
   <test name="CDI TCK">
-    <packages>
-        <package name="org.jboss.jsr299.tck.tests.*"/>
-        <package name="org.jboss.jsr299.tck.interceptors.tests.*"/>
-    </packages>
     <classes>
-      <class name="org.jboss.jsr299.tck.tests.context.passivating.broken.dependentScopedProducerFieldReturnsNonSerializableObjectForInjectionIntoStatefulSessionBean.EnterpriseBeanWithIllegalDependencyTest">
-        <methods>
-          <exclude name="test"/>
-        </methods>
-      </class>
-      <class name="org.jboss.jsr299.tck.tests.context.passivating.broken.dependentScopedProducerMethodReturnsNonSerializableObjectForInjectionIntoStatefulSessionBean.EnterpriseBeanWithIllegalDependencyTest">
-        <methods>
-          <exclude name="test"/>
-        </methods>
-      </class>
-      <class name="org.jboss.jsr299.tck.tests.context.passivating.broken.enterpriseBeanWithNonPassivatingDecorator.EnterpriseBeanWithNonPassivatingDecoratorTest">
-        <methods>
-          <exclude name="testEnterpriseBeanWithNonPassivatingDecoratorFails"/>
-        </methods>
-      </class>
-      <class name="org.jboss.jsr299.tck.tests.implementation.enterprise.lifecycle.EnterpriseBeanLifecycleTest">
-        <methods>
-          <exclude name="testCreateSFSB"/>
-        </methods>
-      </class>
-      <class name="org.jboss.jsr299.tck.tests.lookup.injection.non.contextual.ws.InjectionIntoWebServiceEndPointTest">
-        <methods>
-          <exclude name="testInjectionIntoWebServiceEndpoint"/>
-        </methods>
-      </class>
-      <!-- see CDI-140 -->
-      <class
-        name="org.jboss.jsr299.tck.tests.context.passivating.broken.passivatingProducerMethodWithNonPassivatingParameter.PassivatingProducerMethodWithNonPassivatingParameterTest">
-        <methods>
-          <exclude name="testSimpleDependentWebBeanWithNonSerializableImplementationInjectedIntoProducerMethodParameterWithPassivatingScopeFails"></exclude>
-        </methods>
-      </class>
+      <class name="org.jboss.jsr299.tck.tests.context.passivating.broken.decoratorWithNonPassivatingBeanConstructor.DecoratorWithNonPassivatingBeanConstructorTest" />
     </classes>
   </test>
 </suite>
diff --git a/tck/pom.xml b/tck/pom.xml
index 2030ba2..36e5bf4 100644
--- a/tck/pom.xml
+++ b/tck/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>openejb</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>tck</artifactId>
diff --git a/tck/tck-common/pom.xml b/tck/tck-common/pom.xml
index d075309..8d0aeab 100644
--- a/tck/tck-common/pom.xml
+++ b/tck/tck-common/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>tck</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>tck-common</artifactId>
diff --git a/tomee/apache-tomcat/pom.xml b/tomee/apache-tomcat/pom.xml
index 1545e72..2d48313 100644
--- a/tomee/apache-tomcat/pom.xml
+++ b/tomee/apache-tomcat/pom.xml
@@ -24,13 +24,13 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
   <artifactId>apache-tomcat</artifactId>
   <name>OpenEJB :: TomEE :: Apache Tomcat</name>
-  <version>7.0.32-SNAPSHOT</version>
+  <version>7.0.34</version>
   <packaging>pom</packaging>
 
   <build>
@@ -106,7 +106,9 @@
 
   <properties>
     <!-- using a proxy is generally better -->
-    <tomcat.url>http://www.apache.org/dist/tomcat/tomcat-7/v${tomcat.version}/bin/apache-tomcat-${tomcat.version}.zip</tomcat.url>
+    <tomcat.url>https://dist.apache.org/repos/dist/dev/tomcat/tomcat-7/v7.0.34/bin/apache-tomcat-7.0.34.zip</tomcat.url>
+<!--
+<tomcat.url>http://www.apache.org/dist/tomcat/tomcat-7/v${tomcat.version}/bin/apache-tomcat-${tomcat.version}.zip</tomcat.url>-->
     <tomcat.tmp>${project.build.directory}/apache-tomcat-${tomcat.bundle.version}.zip</tomcat.tmp>
     <artifact.path>${settings.localRepository}/org/apache/openejb/${project.artifactId}/${project.version}/${project.artifactId}-${project.version}.zip</artifact.path>
   </properties>
diff --git a/tomee/apache-tomee-deb-package/pom.xml b/tomee/apache-tomee-deb-package/pom.xml
index 647c194..092844a 100644
--- a/tomee/apache-tomee-deb-package/pom.xml
+++ b/tomee/apache-tomee-deb-package/pom.xml
@@ -21,7 +21,7 @@
     <parent>

         <artifactId>tomee</artifactId>

         <groupId>org.apache.openejb</groupId>

-        <version>1.5.1-SNAPSHOT</version>

+        <version>1.5.1</version>

     </parent>

     <modelVersion>4.0.0</modelVersion>

 

diff --git a/tomee/apache-tomee-deb-package/src/main/java/org/apache/tomee/debian/PackageBuilder.java b/tomee/apache-tomee-deb-package/src/main/java/org/apache/tomee/debian/PackageBuilder.java
index 60521ef..17968c0 100644
--- a/tomee/apache-tomee-deb-package/src/main/java/org/apache/tomee/debian/PackageBuilder.java
+++ b/tomee/apache-tomee-deb-package/src/main/java/org/apache/tomee/debian/PackageBuilder.java
@@ -146,7 +146,7 @@
 

         if (file.isDirectory()) {

             final File[] children = file.listFiles();

-            for (File child : children) {

+            if (null != children) for (File child : children) {

                 tar(baseDir, checksumWriter, child, os, modeMappings);

             }

         }

@@ -231,7 +231,7 @@
 

         final int baseDirLength = baseDir.getAbsolutePath().length();

         final File[] files = baseDir.listFiles();

-        for (File entry : files) {

+        if (null != files) for (File entry : files) {

             final String basePath = entry.getAbsolutePath().substring(baseDirLength).replaceAll("\\\\", "/");

 

             final String dest = dirMappings.get(basePath);

@@ -314,7 +314,9 @@
     ) {

         final File expandedTarGz = expandTarGz(sourceTarGz);

 

-        final File dataTarGzFolder = buildDataTarGzFolder(expandedTarGz.listFiles()[0], dirMapping);

+        final File[] files = expandedTarGz.listFiles();

+        final File root = (null != files ? files[0] : expandedTarGz);

+        final File dataTarGzFolder = buildDataTarGzFolder(files[0], dirMapping);

 

         final File md5sums = new File(sourceTarGz.getParent(), "md5sums");

         final File data = compressTarGz(

diff --git a/tomee/apache-tomee-deb/pom.xml b/tomee/apache-tomee-deb/pom.xml
index 8661386..d2ef18e 100644
--- a/tomee/apache-tomee-deb/pom.xml
+++ b/tomee/apache-tomee-deb/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <artifactId>tomee</artifactId>
         <groupId>org.apache.openejb</groupId>
-        <version>1.5.1-SNAPSHOT</version>
+        <version>1.5.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>apache-tomee-deb</artifactId>
@@ -34,13 +34,13 @@
         <dependency> <!-- to be sure to have it -->
             <groupId>org.apache.openejb</groupId>
             <artifactId>apache-tomee</artifactId>
-            <version>1.5.1-SNAPSHOT</version>
+            <version>1.5.1</version>
             <type>pom</type>
         </dependency>
         <dependency> <!-- to be sure to have it -->
             <groupId>org.apache.openejb</groupId>
             <artifactId>apache-tomee-deb-package</artifactId>
-            <version>1.5.1-SNAPSHOT</version>
+            <version>1.5.1</version>
         </dependency>
     </dependencies>
 
diff --git a/tomee/apache-tomee/pom.xml b/tomee/apache-tomee/pom.xml
index 33684a2..f106b66 100644
--- a/tomee/apache-tomee/pom.xml
+++ b/tomee/apache-tomee/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>apache-tomee</artifactId>
diff --git a/tomee/build.xml b/tomee/build.xml
index fdccce5..86a6309 100644
--- a/tomee/build.xml
+++ b/tomee/build.xml
@@ -19,7 +19,7 @@
 <project name="dev-helper" default="web">
 
     <target name="web">
-        <copy verbose="true" todir="apache-tomee/target/apache-tomee-webprofile-1.1.0-SNAPSHOT/webapps/tomee">
+        <copy verbose="true" todir="apache-tomee/target/apache-tomee-webprofile-1.5.1/webapps/tomee">
             <fileset dir="tomee-webapp/src/main/webapp" includes="**/*.js"/>
             <fileset dir="tomee-webapp/src/main/webapp" includes="**/*.css"/>
             <fileset dir="tomee-webapp/src/main/webapp" includes="**/*.html"/>
@@ -27,7 +27,7 @@
     </target>
 
     <target name="rs">
-        <copy verbose="true" todir="apache-tomee/target/apache-tomee-jaxrs-1.1.0-SNAPSHOT/webapps/tomee">
+        <copy verbose="true" todir="apache-tomee/target/apache-tomee-jaxrs-1.5.1/webapps/tomee">
             <fileset dir="tomee-webapp/src/main/webapp" includes="**/*.js"/>
             <fileset dir="tomee-webapp/src/main/webapp" includes="**/*.css"/>
             <fileset dir="tomee-webapp/src/main/webapp" includes="**/*.html"/>
@@ -35,7 +35,7 @@
     </target>
 
     <target name="plus">
-        <copy verbose="true" todir="apache-tomee/target/apache-tomee-plus-1.1.0-SNAPSHOT/webapps/tomee">
+        <copy verbose="true" todir="apache-tomee/target/apache-tomee-plus-1.5.1/webapps/tomee">
             <fileset dir="tomee-webapp/src/main/webapp" includes="**/*.js"/>
             <fileset dir="tomee-webapp/src/main/webapp" includes="**/*.css"/>
             <fileset dir="tomee-webapp/src/main/webapp" includes="**/*.html"/>
diff --git a/tomee/pom.xml b/tomee/pom.xml
index a40c396..4dc6ba5 100644
--- a/tomee/pom.xml
+++ b/tomee/pom.xml
@@ -22,11 +22,11 @@
   <parent>
     <artifactId>openejb</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>tomee</artifactId>
-  <version>1.5.1-SNAPSHOT</version>
+  <version>1.5.1</version>
   <packaging>pom</packaging>
   <name>OpenEJB :: TomEE</name>
 
@@ -183,7 +183,7 @@
   </profiles>
 
   <properties>
-    <openejb.version>4.5.1-SNAPSHOT</openejb.version>
+    <openejb.version>4.5.1</openejb.version>
   </properties>
 </project>
 
diff --git a/tomee/tomee-catalina/pom.xml b/tomee/tomee-catalina/pom.xml
index 04c2b3e..ad12d44 100644
--- a/tomee/tomee-catalina/pom.xml
+++ b/tomee/tomee-catalina/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>tomee-catalina</artifactId>
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java
index cdef2d7..68e433f 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java
@@ -27,9 +27,6 @@
 import org.apache.catalina.core.StandardEngine;
 import org.apache.catalina.core.StandardHost;
 import org.apache.catalina.core.StandardServer;
-import org.apache.catalina.deploy.ContextResource;
-import org.apache.catalina.deploy.NamingResources;
-import org.apache.openejb.loader.SystemInstance;
 import org.apache.tomee.catalina.cluster.TomEEClusterListener;
 import org.apache.tomee.loader.TomcatHelper;
 
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
index c4b0cbd..22d7008 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
@@ -20,6 +20,7 @@
 import org.apache.catalina.LifecycleException;
 import org.apache.catalina.loader.WebappClassLoader;
 import org.apache.openejb.ClassLoaderUtil;
+import org.apache.openejb.OpenEJB;
 import org.apache.openejb.classloader.ClassLoaderConfigurer;
 import org.apache.openejb.classloader.WebAppEnricher;
 import org.apache.openejb.loader.SystemInstance;
@@ -83,12 +84,29 @@
                 }
             }
         }
+
+        // avoid to redefine classes from server in this classloader is it not already loaded
+        if (URLClassLoaderFirst.shouldSkip(name)) {
+            try {
+                return OpenEJB.class.getClassLoader().loadClass(name);
+            } catch (ClassNotFoundException e) {
+                return super.loadClass(name);
+            }
+        }
         return super.loadClass(name);
     }
 
     public void internalStop() throws LifecycleException {
         if (isStarted()) {
-            super.stop();
+            // reset classloader because of tomcat classloaderlogmanager
+            // to be sure we reset the right loggers
+            final ClassLoader loader = Thread.currentThread().getContextClassLoader();
+            Thread.currentThread().setContextClassLoader(this);
+            try {
+                super.stop();
+            } finally {
+                Thread.currentThread().setContextClassLoader(loader);
+            }
         }
     }
 
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java
index 55f9eaf..ee08ccf 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java
@@ -35,6 +35,7 @@
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.URLs;
+import org.apache.tomcat.util.digester.Digester;
 import org.apache.tomee.common.NamingUtil;
 import org.apache.tomee.common.ResourceFactory;
 
@@ -60,7 +61,6 @@
     private static final String ADJUST_DATASOURCE_JNDI_NAMES = SystemInstance.get().getProperty("tomee.resources.adjust-web-xml-jndi-name", "true");
 
     private TomcatWebAppBuilder.StandardContextInfo info;
-    private boolean configureStartOk = false;
 
     // processAnnotationXXX is called for each folder of WEB-INF
     // since we store all classes in WEB-INF we will do it only once so use this boolean to avoid multiple processing
@@ -73,14 +73,26 @@
 
     @Override
     public void configureStart() {
-        if (configureStartOk) {
-            return;
-        }
         super.configureStart();
-
         adjustDataSourceNameIfNecessary(); // doing it here to potentially factorize resource id resolution
+    }
 
-        configureStartOk = true;
+    @Override
+    protected void contextConfig(final Digester digester) {
+        final NamingResources resources;
+        if (context != null) {
+            resources = context.getNamingResources();
+        } else {
+            resources = null;
+        }
+
+        if (resources instanceof OpenEJBNamingResource) {
+            ((OpenEJBNamingResource) resources).setTomcatResource(true);
+        }
+        super.contextConfig(digester);
+        if (resources instanceof OpenEJBNamingResource) {
+            ((OpenEJBNamingResource) resources).setTomcatResource(false);
+        }
     }
 
     private void adjustDataSourceNameIfNecessary() {
@@ -226,7 +238,6 @@
         super.processAnnotations(fragments, handlesTypesOnly);
     }
 
-
     @Override
     protected void processAnnotationsFile(File file, WebXml fragment, boolean handlesTypesOnly) {
         final WebAppInfo webAppInfo = info.get();
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingResource.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingResource.java
index 783b5f9..37d6ff8 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingResource.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingResource.java
@@ -27,9 +27,15 @@
 import org.apache.catalina.deploy.NamingResources;
 import org.apache.catalina.deploy.ResourceBase;
 
+import java.util.ArrayList;
+import java.util.Collection;
+
 public class OpenEJBNamingResource extends NamingResources {
     private static final String JAVA_PREFIX = "java:";
 
+    private boolean isTomcatResource = false;
+    private final Collection<ResourceBase> tomcatResources = new ArrayList<ResourceBase>();
+
     @Override
     public void addEnvironment(ContextEnvironment environment) {
         normalize(environment);
@@ -58,6 +64,9 @@
     public void addResource(ContextResource ref) {
         normalize(ref);
         super.addResource(ref);
+        if (isTomcatResource) {
+            pushResourceToAddInOpenEJB(ref);
+        }
     }
 
     @Override
@@ -94,4 +103,16 @@
             ref.setType("");
         }
     }
+
+    public void setTomcatResource(final boolean tomcatResource) {
+        isTomcatResource = tomcatResource;
+    }
+
+    private void pushResourceToAddInOpenEJB(final ContextResource ref) {
+        tomcatResources.add(ref);
+    }
+
+    public Collection<ResourceBase> getTomcatResources() {
+        return tomcatResources;
+    }
 }
\ No newline at end of file
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBSecurityListener.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBSecurityListener.java
index b4b5388..6c0a95d 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBSecurityListener.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBSecurityListener.java
@@ -33,19 +33,23 @@
         request = req;
     }
 
-    @Override public void onComplete(AsyncEvent asyncEvent) throws IOException {
+    @Override
+    public void onComplete(AsyncEvent asyncEvent) throws IOException {
         exit();
     }
 
-    @Override public void onError(AsyncEvent asyncEvent) throws IOException {
+    @Override
+    public void onError(AsyncEvent asyncEvent) throws IOException {
         exit();
     }
 
-    @Override public void onStartAsync(AsyncEvent asyncEvent) throws IOException {
+    @Override
+    public void onStartAsync(AsyncEvent asyncEvent) throws IOException {
         enter();
     }
 
-    @Override public void onTimeout(AsyncEvent asyncEvent) throws IOException {
+    @Override
+    public void onTimeout(AsyncEvent asyncEvent) throws IOException {
         exit();
     }
 
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/SimpleTomEETcpCluster.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/SimpleTomEETcpCluster.java
new file mode 100644
index 0000000..699b90d
--- /dev/null
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/SimpleTomEETcpCluster.java
@@ -0,0 +1,65 @@
+/*
+ * 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.tomee.catalina;
+
+import org.apache.catalina.Valve;
+import org.apache.catalina.ha.ClusterListener;
+import org.apache.catalina.ha.tcp.SimpleTcpCluster;
+import org.apache.tomee.catalina.cluster.TomEEClusterListener;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+public class SimpleTomEETcpCluster extends SimpleTcpCluster {
+    public SimpleTomEETcpCluster(final SimpleTcpCluster from) {
+        clusterListeners = new ArrayList<ClusterListener>(Arrays.asList(from.findClusterListeners()));
+
+        setClusterName(from.getClusterName());
+        setContainer(from.getContainer());
+        setNotifyLifecycleListenerOnFailure(from.isNotifyLifecycleListenerOnFailure());
+
+        setChannelSendOptions(from.getChannelSendOptions());
+        setChannelStartOptions(from.getChannelStartOptions());
+        setHeartbeatBackgroundEnabled(from.isHeartbeatBackgroundEnabled());
+        setChannel(from.getChannel());
+        getManagers().putAll(from.getManagers());
+        setManagerTemplate(from.getManagerTemplate());
+        setClusterDeployer(from.getClusterDeployer());
+
+        for (Valve valve : from.getValves()) {
+            addValve(valve);
+        }
+
+        final Iterator<String> propertyNames = from.getPropertyNames();
+        while (propertyNames.hasNext()) {
+            String next = propertyNames.next();
+            setProperty(next, from.getProperty(next));
+        }
+    }
+
+    @Override
+    protected void checkDefaults() {
+        final List<ClusterListener> currentListeners = clusterListeners;
+        if (currentListeners.size() == 1 && currentListeners.iterator().next() == TomEEClusterListener.INSTANCE) {
+            currentListeners.clear();
+        }
+        super.checkDefaults();
+        addClusterListener(TomEEClusterListener.INSTANCE);
+    }
+}
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEServiceManager.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEServiceManager.java
index d7f345a..747a50e 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEServiceManager.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEServiceManager.java
@@ -26,9 +26,9 @@
     @Override
     protected boolean accept(final String serviceName) {
         // managed manually or done in a different way in TomEE
-        return !"httpejbd".equals(serviceName)
-                && !"ejbd".equals(serviceName)
-                && !"ejbds".equals(serviceName)
-                && !"admin".equals(serviceName);
+        return !"httpejbd".equalsIgnoreCase(serviceName)
+                && !"ejbd".equalsIgnoreCase(serviceName)
+                && !"ejbds".equalsIgnoreCase(serviceName)
+                && !"admin".equalsIgnoreCase(serviceName);
     }
 }
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJavaJndiBinder.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJavaJndiBinder.java
index 8dc484a..33ee1d8 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJavaJndiBinder.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJavaJndiBinder.java
@@ -22,7 +22,8 @@
 import org.apache.catalina.core.StandardContext;
 
 public class TomcatJavaJndiBinder implements LifecycleListener {
-    @Override public void lifecycleEvent(LifecycleEvent event) {
+    @Override
+    public void lifecycleEvent(LifecycleEvent event) {
         Object source = event.getSource();
         if (source instanceof StandardContext) {
             final StandardContext context = (StandardContext) source;
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
index ca732ef..566d559 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
@@ -70,6 +70,7 @@
 import javax.naming.Binding;
 import javax.naming.Context;
 import javax.naming.LinkRef;
+import javax.naming.NameNotFoundException;
 import javax.naming.NamingException;
 import javax.naming.RefAddr;
 import javax.persistence.EntityManager;
@@ -132,7 +133,7 @@
         this.useCrossClassLoaderRef = useCrossClassLoaderRef;
     }
 
-    public void mergeJndi(final Collection<String> tomcatResources) throws OpenEJBException {
+    public void mergeJndi() throws OpenEJBException {
 
         NamingResources naming = standardContext.getNamingResources();
 
@@ -159,17 +160,6 @@
             mergeRef(naming, ref, moduleUri);
         }
         for (ResourceReferenceInfo ref : webAppInfo.jndiEnc.resourceRefs) {
-            String id = ref.referenceName;
-            if (id == null) {
-                id = ref.resourceID;
-            }
-            if (id != null && id.startsWith("comp/env/")) {
-                id = id.substring("comp/env/".length());
-            }
-            if (id != null && tomcatResources != null && tomcatResources.contains(id)) {
-                continue;
-            }
-
             mergeRef(naming, ref);
         }
         for (ResourceEnvReferenceInfo ref : webAppInfo.jndiEnc.resourceEnvRefs) {
@@ -217,6 +207,16 @@
         TomcatWebAppBuilder.ContextInfo contextInfo = null;
         if (builder != null) {
             contextInfo = builder.getContextInfo(standardContext);
+            if (webContext == null && contextInfo.appInfo != null) { // can happen if deployed from apps/
+                for (WebAppInfo webAppInfo : contextInfo.appInfo.webApps) {
+                    if (webAppInfo.path != null && webAppInfo.path.equals(standardContext.getDocBase())) {
+                        webContext = cs.getWebContext(webAppInfo.moduleId);
+                        if (webContext != null) {
+                            break;
+                        }
+                    }
+                }
+            }
         }
         Collection<String> ignoreNames = null;
         if (contextInfo != null) {
@@ -232,8 +232,16 @@
                     }
 
                     Object value = normalize(entry.getValue());
-                    if (ignoreNames.contains(removeCompEnv(key))) {
-                        continue;
+                    if (ignoreNames.contains(removeCompEnv(key))) { // keep tomcat resources
+                        try {
+                            // tomcat can get the reference but the bound value
+                            // can come from OpenEJB (ejb-jar.xml for instance)
+                            // so check the lookup can be resolved before skipping it
+                            root.lookup(key);
+                            continue;
+                        } catch (NameNotFoundException nnfe) {
+                            // no-op: let it be rebound or bound
+                        }
                     }
 
                     Contexts.createSubcontexts(root, key);
@@ -346,6 +354,7 @@
             }
 
         } catch (Exception e) {
+            // no-op
         }
 
         return value;
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatResourceFactory.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatResourceFactory.java
new file mode 100644
index 0000000..e1aeb08
--- /dev/null
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatResourceFactory.java
@@ -0,0 +1,74 @@
+/*
+ * 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.tomee.catalina;
+
+import org.apache.openejb.assembler.classic.WebAppBuilder;
+import org.apache.openejb.loader.SystemInstance;
+
+import javax.naming.CompositeName;
+import javax.naming.NamingException;
+import javax.naming.spi.ObjectFactory;
+
+public class TomcatResourceFactory {
+    private String jndiName;
+    private String appName;
+    private String factory;
+
+    public void setJndiName(final String jndiName) {
+        this.jndiName = jndiName;
+    }
+
+    public void setAppName(final String appName) {
+        this.appName = appName;
+    }
+
+    public void setFactory(final String factory) {
+        this.factory = factory;
+    }
+
+    public Object create() throws NamingException {
+        final TomcatWebAppBuilder.ContextInfo info = ((TomcatWebAppBuilder) SystemInstance.get().getComponent(WebAppBuilder.class))
+                .getContextInfo(appName);
+        if (info == null || info.standardContext == null) {
+            return null;
+        }
+
+        final ClassLoader loader = Thread.currentThread().getContextClassLoader();
+        final ClassLoader tccl = info.standardContext.getLoader().getClassLoader();
+        Thread.currentThread().setContextClassLoader(tccl);
+        try {
+            // lookup can't work because of the lifecycle
+            // return new InitialContext().lookup(jndiName);
+
+            if (factory != null) {
+                final Class<?> clazz = tccl.loadClass(factory);
+                final Object instance = clazz.newInstance();
+                if (instance instanceof ObjectFactory) {
+                    // not really used as expected but it matches a bit more than before
+                    // context is null since it can't be used at this moment (see TomcatWebAppBuilder lifecycle)
+                    return ((ObjectFactory) instance).getObjectInstance(null, new CompositeName(jndiName), null, null);
+                }
+            }
+        } catch (Exception e) {
+            // no-op
+        } finally {
+            Thread.currentThread().setContextClassLoader(loader);
+        }
+
+        return null;
+    }
+}
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
index f6eaef2..8d4080c 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
@@ -39,18 +39,17 @@
 import org.apache.catalina.deploy.ApplicationParameter;
 import org.apache.catalina.deploy.ContextEnvironment;
 import org.apache.catalina.deploy.ContextResource;
-import org.apache.catalina.deploy.ContextResourceEnvRef;
 import org.apache.catalina.deploy.ContextResourceLink;
-import org.apache.catalina.deploy.ContextService;
 import org.apache.catalina.deploy.ContextTransaction;
 import org.apache.catalina.deploy.NamingResources;
+import org.apache.catalina.deploy.ResourceBase;
 import org.apache.catalina.ha.CatalinaCluster;
+import org.apache.catalina.ha.tcp.SimpleTcpCluster;
 import org.apache.catalina.loader.WebappClassLoader;
 import org.apache.catalina.loader.WebappLoader;
 import org.apache.catalina.session.StandardManager;
 import org.apache.catalina.startup.Constants;
 import org.apache.catalina.startup.ContextConfig;
-import org.apache.catalina.startup.ContextRuleSet;
 import org.apache.catalina.startup.HostConfig;
 import org.apache.catalina.startup.RealmRuleSet;
 import org.apache.catalina.startup.SetAllPropertiesRule;
@@ -72,16 +71,18 @@
 import org.apache.openejb.assembler.classic.EjbJarInfo;
 import org.apache.openejb.assembler.classic.InjectionBuilder;
 import org.apache.openejb.assembler.classic.JndiEncBuilder;
+import org.apache.openejb.assembler.classic.OpenEjbConfiguration;
+import org.apache.openejb.assembler.classic.ResourceInfo;
 import org.apache.openejb.assembler.classic.ServletInfo;
 import org.apache.openejb.assembler.classic.WebAppBuilder;
 import org.apache.openejb.assembler.classic.WebAppInfo;
 import org.apache.openejb.cdi.CdiBuilder;
 import org.apache.openejb.config.AppModule;
-import org.apache.openejb.config.AutoConfig;
 import org.apache.openejb.config.ConfigurationFactory;
 import org.apache.openejb.config.DeploymentLoader;
 import org.apache.openejb.config.WebModule;
 import org.apache.openejb.config.event.BeforeDeploymentEvent;
+import org.apache.openejb.config.sys.Resource;
 import org.apache.openejb.core.CoreContainerSystem;
 import org.apache.openejb.core.ParentClassLoaderFinder;
 import org.apache.openejb.core.WebContext;
@@ -90,12 +91,10 @@
 import org.apache.openejb.jee.WebApp;
 import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.SystemInstance;
-import org.apache.openejb.util.LinkResolver;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 import org.apache.tomcat.InstanceManager;
 import org.apache.tomcat.util.digester.Digester;
-import org.apache.tomcat.util.digester.RuleSet;
 import org.apache.tomee.catalina.cluster.ClusterObserver;
 import org.apache.tomee.catalina.cluster.TomEEClusterListener;
 import org.apache.tomee.catalina.event.AfterApplicationCreated;
@@ -114,7 +113,6 @@
 import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
-import javax.persistence.EntityManagerFactory;
 import javax.servlet.ServletContext;
 import javax.servlet.SessionTrackingMode;
 import javax.servlet.jsp.JspApplicationContext;
@@ -274,9 +272,16 @@
             return;
         }
 
-        if (cluster instanceof CatalinaCluster) {
-            final CatalinaCluster haCluster = (CatalinaCluster) cluster;
-            haCluster.addClusterListener(new TomEEClusterListener());
+        Cluster current = cluster;
+        if (cluster instanceof SimpleTcpCluster) {
+            final Container container = cluster.getContainer();
+            current = new SimpleTomEETcpCluster((SimpleTcpCluster) cluster);
+            container.setCluster(current);
+        }
+
+        if (current instanceof CatalinaCluster) {
+            final CatalinaCluster haCluster = (CatalinaCluster) current;
+            haCluster.addClusterListener(TomEEClusterListener.INSTANCE); // better to be a singleton
             clusters.add(haCluster);
         }
     }
@@ -364,7 +369,7 @@
         digester.addSetNext("Context/Manager/Store", "setStore", "org.apache.catalina.Store");
         digester.addRuleSet(new RealmRuleSet("Context/"));
         digester.addCallMethod("Context/WatchedResource", "addWatchedResource", 0);
-        digester.addObjectCreate("Context/Resource","org.apache.catalina.deploy.ContextResource");
+        digester.addObjectCreate("Context/Resource", "org.apache.catalina.deploy.ContextResource");
         digester.addRule("Context/Resource", new SetAllPropertiesRule());
         digester.addRule("Context/Resource", new SetNextNamingRule("addResource", "org.apache.catalina.deploy.ContextResource"));
 
@@ -384,16 +389,19 @@
             // look for context.xml
             final File war = new File(webApp.path);
             InputStream contextXml = null;
+            URL contextXmlUrl = null;
             if (war.isDirectory()) {
-                final File cXml = new File(war, Constants.ApplicationContextXml);
+                final File cXml = new File(war, Constants.ApplicationContextXml).getAbsoluteFile();
                 if (cXml.exists()) {
                     contextXml = IO.read(cXml);
+                    contextXmlUrl = cXml.toURI().toURL();
                     logger.info("using context file " + cXml.getAbsolutePath());
                 }
             } else { // war
                 final JarFile warAsJar = new JarFile(war);
                 final JarEntry entry = warAsJar.getJarEntry(Constants.ApplicationContextXml);
                 if (entry != null) {
+                    contextXmlUrl = new URL("jar:" + war.getAbsoluteFile().toURI().toURL().toExternalForm() + "!/" + Constants.ApplicationContextXml);
                     contextXml = warAsJar.getInputStream(entry);
                 }
             }
@@ -403,6 +411,7 @@
                 synchronized (CONTEXT_DIGESTER) {
                     try {
                         standardContext = (StandardContext) CONTEXT_DIGESTER.parse(contextXml);
+                        standardContext.setConfigFile(contextXmlUrl);
                     } catch (Exception e) {
                         logger.error("can't parse context xml for webapp " + webApp.path, e);
                         standardContext = new StandardContext();
@@ -788,6 +797,21 @@
         return new File(new File(System.getProperty("catalina.base"), base), doc); // shouldn't occur
     }
 
+    public ContextInfo getContextInfo(final String appName) {
+        ContextInfo info = null;
+        for (Map.Entry<String, ContextInfo> current : infos.entrySet()) {
+            final String key = current.getKey();
+            if (key.equals(appName)) {
+                info = current.getValue();
+                break;
+            }
+            if (key.endsWith(appName)) {
+                info = current.getValue();
+            }
+        }
+        return info;
+    }
+
     public class StandardContextInfo {
 
         private final StandardContext standardContext;
@@ -913,21 +937,35 @@
         ContextInfo contextInfo = getContextInfo(standardContext);
         ClassLoader classLoader = standardContext.getLoader().getClassLoader();
 
-        final LifecycleListener[] listeners = standardContext.findLifecycleListeners();
-        if (listeners != null) { // force init of tomcat resources
-            for (LifecycleListener listener : listeners) {
-                if (OpenEJBContextConfig.class.isInstance(listener)) {
-                    ((OpenEJBContextConfig) listener).configureStart();
-                }
-            }
-        }
-
-        final Collection<String> tomcatResources = getResourcesNames(standardContext.getNamingResources());
-        AutoConfig.PROVIDED_RESOURCES.set(tomcatResources);
-        AutoConfig.PROVIDED_RESOURCES_PREFIX.set("java:/comp/env/");
-
         if (contextInfo == null) {
             final AppModule appModule = loadApplication(standardContext);
+
+            if (standardContext.getNamingResources() instanceof OpenEJBNamingResource) {
+                // add them to the app as resource
+                final OpenEJBNamingResource nr = (OpenEJBNamingResource) standardContext.getNamingResources();
+                for (ResourceBase resource : nr.getTomcatResources()) {
+                    final String name = resource.getName();
+
+                    boolean found = false;
+                    for (ResourceInfo r : SystemInstance.get().getComponent(OpenEjbConfiguration.class).facilities.resources) {
+                        if (r.id.equals(name)) {
+                            nr.removeResource(name);
+                            found = true;
+                            logger.warning(name + " resource was defined in both tomcat and tomee so removing tomcat one");
+                            break;
+                        }
+                    }
+
+                    if (!found) {
+                        final Resource newResource = new Resource(name, resource.getType(), "org.apache.tomee:ProvidedByTomcat");
+                        newResource.getProperties().setProperty("jndiName", newResource.getId());
+                        newResource.getProperties().setProperty("appName", getId(standardContext));
+                        newResource.getProperties().setProperty("factory", (String) resource.getProperty("factory"));
+                        appModule.getResources().add(newResource);
+                    }
+                }
+            }
+
             if (appModule != null) {
                 try {
                     contextInfo = addContextInfo(standardContext.getHostname(), standardContext);
@@ -959,8 +997,6 @@
         } else {
             contextInfo.standardContext = standardContext;
         }
-        contextInfo.resourceNames = tomcatResources;
-
 
         final String id = getId(standardContext);
         WebAppInfo webAppInfo = null;
@@ -1019,7 +1055,7 @@
                 final TomcatJndiBuilder jndiBuilder = new TomcatJndiBuilder(standardContext, webAppInfo, injections);
                 NamingUtil.setCurrentContext(standardContext);
                 try {
-                    jndiBuilder.mergeJndi(tomcatResources);
+                    jndiBuilder.mergeJndi();
                 } finally {
                     NamingUtil.setCurrentContext(null);
                 }
@@ -1069,41 +1105,6 @@
         }
     }
 
-    private Collection<String> getResourcesNames(final NamingResources namingResources) {
-        final Collection<String> names = new ArrayList<String>();
-        for (ContextResource resource : namingResources.findResources()) {
-            final String name = resource.getName();
-            if (name != null) {
-                names.add(resource.getName());
-            }
-        }
-        for (ContextEnvironment resource : namingResources.findEnvironments()) {
-            final String name = resource.getName();
-            if (name != null) {
-                names.add(resource.getName());
-            }
-        }
-        for (ContextResourceLink resource : namingResources.findResourceLinks()) {
-            final String name = resource.getName();
-            if (name != null) {
-                names.add(resource.getName());
-            }
-        }
-        for (ContextService resource : namingResources.findServices()) {
-            final String name = resource.getName();
-            if (name != null) {
-                names.add(resource.getName());
-            }
-        }
-        for (ContextResourceEnvRef resource : namingResources.findResourceEnvRefs()) {
-            final String name = resource.getName();
-            if (name != null) {
-                names.add(resource.getName());
-            }
-        }
-        return names;
-    }
-
     private static void updateInjections(final Collection<Injection> injections, final ClassLoader classLoader, final boolean keepInjection) {
         final Iterator<Injection> it = injections.iterator();
         final List<Injection> newOnes = new ArrayList<Injection>();
@@ -1144,10 +1145,7 @@
                 }
                 container = container.getParent();
             }
-            if (container != null) {
-                return undeploy(standardContext, container);
-            }
-            return false;
+            return container != null && undeploy(standardContext, container);
         }
     }
 
@@ -1315,6 +1313,7 @@
                     }
                 }
             } catch (NamingException e) {
+                // no-op
             }
         }
 
@@ -1657,8 +1656,6 @@
      * @return a openejb application module
      */
     private AppModule loadApplication(final StandardContext standardContext) {
-        final ServletContext servletContext = standardContext.getServletContext();
-
         // don't use getId since the app id shouldnt get the host (jndi)
         // final TomcatDeploymentLoader tomcatDeploymentLoader = new TomcatDeploymentLoader(standardContext, getId(standardContext));
 
@@ -1896,7 +1893,6 @@
         public StandardContext standardContext;
         public HostConfig deployer;
         public Host host;
-        public LinkResolver<EntityManagerFactory> emfLinkResolver;
         public Collection<String> resourceNames = Collections.emptyList();
 
         @Override
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/TomEEClusterListener.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/TomEEClusterListener.java
index f550c0f..221a263 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/TomEEClusterListener.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/TomEEClusterListener.java
@@ -40,6 +40,8 @@
 import java.util.concurrent.TimeUnit;
 
 public class TomEEClusterListener extends ClusterListener {
+    public static final TomEEClusterListener INSTANCE = new TomEEClusterListener();
+
     private static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, TomEEClusterListener.class);
     private static final Properties IC_PROPS = new Properties();
 
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java
index e24d444..70c7381 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java
@@ -79,7 +79,9 @@
         if (info == null || info.standardContext == null) { // error
             LOGGER.warning("Can't find " + path);
         } else {
-            info.standardContext.reload();
+            if (info.standardContext.getReloadable()) {
+                info.standardContext.reload();
+            }
         }
     }
 
diff --git a/tomee/tomee-common/pom.xml b/tomee/tomee-common/pom.xml
index fc12c61..da23c22 100644
--- a/tomee/tomee-common/pom.xml
+++ b/tomee/tomee-common/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>tomee-common</artifactId>
diff --git a/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java b/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
index 9f38058..2606603 100644
--- a/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
+++ b/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
@@ -174,11 +174,24 @@
 
         addTomEELinkToTomcatHome();
 
+        commentDeploymentDir();
+
         if (!alerts.hasErrors()) {
             status = Status.REBOOT_REQUIRED;
         }
     }
 
+    private void commentDeploymentDir() {
+        final File tomeeXml = new File(paths.getCatalinaConfDir(), "tomee.xml");
+        if (!tomeeXml.exists()) {
+            Installers.writeAll(tomeeXml,
+                "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+                "<tomee>\n" +
+                "  <!-- see http://tomee.apache.org/containers-and-resources.html -->\n" +
+                "</tomee\n", alerts);
+        }
+    }
+
     private void addTomEELinkToTomcatHome() {
         final File home = paths.getHome();
         final String indeJsp = Installers.readAll(home, alerts);
@@ -615,6 +628,7 @@
                 systemPropertiesWriter.write("# tomee.jaxws.oldsubcontext = false\n");
 
                 systemPropertiesWriter.write("\n");
+                systemPropertiesWriter.write("# openejb.system.apps = true\n");
                 systemPropertiesWriter.write("# openejb.servicemanager.enabled = true\n");
                 systemPropertiesWriter.write("# openejb.jmx.active = false\n");
                 systemPropertiesWriter.write("# openejb.descriptors.output = false\n");
@@ -645,6 +659,8 @@
                 systemPropertiesWriter.write("# openejb.jsessionid-support = \n");
                 systemPropertiesWriter.write("# openejb.myfaces.disable-default-values = true\n");
                 systemPropertiesWriter.write("# openejb.web.xml.major = \n");
+                systemPropertiesWriter.write("# openjpa.Log = \n");
+                systemPropertiesWriter.write("# openejb.jdbc.log = false\n");
                 systemPropertiesWriter.write("# javax.persistence.provider = org.apache.openjpa.persistence.PersistenceProviderImpl\n");
                 systemPropertiesWriter.write("# javax.persistence.transactionType = \n");
                 systemPropertiesWriter.write("# javax.persistence.jtaDataSource = \n");
diff --git a/tomee/tomee-common/src/main/java/org/apache/tomee/installer/InstallerServlet.java b/tomee/tomee-common/src/main/java/org/apache/tomee/installer/InstallerServlet.java
deleted file mode 100644
index c67545d..0000000
--- a/tomee/tomee-common/src/main/java/org/apache/tomee/installer/InstallerServlet.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/**
- *
- * 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.tomee.installer;
-
-import static org.apache.tomee.installer.Installer.Status.NONE;
-
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.io.File;
-import java.io.Writer;
-
-/**
- * Installs OpenEJB into Tomcat.
- * <p/>
- * NOTE: This servlet can not use any classes from OpenEJB since it is installing OpenEJB itself.
- */
-public class InstallerServlet extends HttpServlet {
-    protected Paths paths;
-    protected Installer installer;
-    protected int attempts;
-    private ServletConfig servletConfig;
-
-    public void init(ServletConfig servletConfig) throws ServletException {
-        this.servletConfig = servletConfig;
-
-        String path = servletConfig.getServletContext().getRealPath("/");
-
-        File openejbWarDir = null;
-        if (path != null) {
-            openejbWarDir = new File(path);
-        }
-
-        paths = new Paths(openejbWarDir);
-        installer = new Installer(paths);
-    }
-
-    protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
-        doIt(httpServletRequest, httpServletResponse);
-    }
-
-    protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
-        doIt(httpServletRequest, httpServletResponse);
-    }
-
-    protected void doIt(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
-        // if they clicked the install button...
-        if ("install".equalsIgnoreCase(req.getParameter("action"))) {
-            // If not already installed, try to install
-            if (installer.getStatus() == NONE) {
-                attempts++;
-
-                paths.reset();
-                installer.reset();
-
-                if ("true".equalsIgnoreCase(req.getParameter("auto"))) {
-                    paths.setCatalinaHomeDir(System.getProperty("catalina.home"));
-                    paths.setCatalinaBaseDir(System.getProperty("catalina.base"));
-                    paths.setServerXmlFile(System.getProperty("catalina.base") + "/conf/server.xml");
-
-                } else {
-                    paths.setCatalinaHomeDir(req.getParameter("catalinaHome"));
-                    paths.setCatalinaBaseDir(req.getParameter("catalinaBase"));
-                    paths.setServerXmlFile(req.getParameter("serverXml"));
-
-                }
-
-                if (paths.verify()) {
-                    installer.installAll();
-                }
-            }
-
-            // send redirect to avoid double post lameness
-            res.sendRedirect(req.getRequestURI());
-        } else {
-
-            req.setAttribute("installer", installer);
-            req.setAttribute("paths", paths);
-            RequestDispatcher rd = servletConfig.getServletContext().getRequestDispatcher("/installer-view.jsp");
-            try {
-                rd.forward(req,res);
-
-            } catch (Exception e) {
-                res.setContentType("text/plain");
-                Writer writer = res.getWriter();
-                for (String s : installer.getAlerts().getErrors()) {
-                    writer.write("[ERROR] " + s);
-                }
-                for (String s : installer.getAlerts().getWarnings()) {
-                    writer.write("[WARN] " + s);
-                }
-                for (String s : installer.getAlerts().getInfos()) {
-                    writer.write("[INFO] " + s);
-                }
-            }
-        }
-    }
-
-    public void dump(ServletOutputStream out) throws IOException {
-        printFile(out, "Catalina home: ", paths.getCatalinaHomeDir());
-        printFile(out, "Catalina base: ", paths.getCatalinaBaseDir());
-        printFile(out, "Catalina server.xml: ", paths.getServerXmlFile());
-        printFile(out, "Catalina conf: ", paths.getCatalinaConfDir());
-        printFile(out, "Catalina lib: ", paths.getCatalinaLibDir());
-        printFile(out, "Catalina bin: ", paths.getCatalinaBinDir());
-        printFile(out, "Catalina catalina.sh: ", paths.getCatalinaShFile());
-        printFile(out, "Catalina catalina.bat: ", paths.getCatalinaBatFile());
-        printFile(out, "OpenEJB lib: ", paths.getOpenEJBLibDir());
-        printFile(out, "OpenEJB loader jar: ", paths.getOpenEJBTomcatLoaderJar());
-        printFile(out, "OpenEJB javaagent jar: ", paths.getOpenEJBJavaagentJar());
-    }
-
-    private void printFile(ServletOutputStream out, String description, File file) throws IOException {
-        out.println(description + ":");
-        out.println("    " + file);
-    }
-}
diff --git a/tomee/tomee-embedded/pom.xml b/tomee/tomee-embedded/pom.xml
index 068dea6..b27e8e7 100644
--- a/tomee/tomee-embedded/pom.xml
+++ b/tomee/tomee-embedded/pom.xml
@@ -23,13 +23,13 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>tomee-embedded</artifactId>
   <packaging>jar</packaging>
   <name>OpenEJB :: TomEE :: TomEE Embedded</name>
-  <version>1.5.1-SNAPSHOT</version>
+  <version>1.5.1</version>
   <build>
     <plugins>
       <plugin>
diff --git a/tomee/tomee-embedded/src/main/resources/META-INF/org.apache.tomee/service-jar.xml b/tomee/tomee-embedded/src/main/resources/META-INF/org.apache.tomee/service-jar.xml
index de6ae9b..8e6d948 100644
--- a/tomee/tomee-embedded/src/main/resources/META-INF/org.apache.tomee/service-jar.xml
+++ b/tomee/tomee-embedded/src/main/resources/META-INF/org.apache.tomee/service-jar.xml
@@ -40,4 +40,9 @@
   <ServiceProvider id="Default ORB" parent="org.apache.openejb.embedded:Default ORB"/>
   <ServiceProvider id="Default Mail Session" parent="org.apache.openejb.embedded:Default Mail Session"/>
   <ServiceProvider id="Default Remote Jndi Provider" parent="org.apache.openejb.embedded:Default Remote Jndi Provider"/>
+  <ServiceProvider id="ProvidedByTomcat" service="Resource" class-name="org.apache.tomee.catalina.TomcatResourceFactory" factory-name="create">
+    jndiName =
+    appName =
+    factory =
+  </ServiceProvider>
 </ServiceJar>
\ No newline at end of file
diff --git a/tomee/tomee-jaxrs-webapp/pom.xml b/tomee/tomee-jaxrs-webapp/pom.xml
index fd66918..4be3da7 100644
--- a/tomee/tomee-jaxrs-webapp/pom.xml
+++ b/tomee/tomee-jaxrs-webapp/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/tomee/tomee-jaxrs/pom.xml b/tomee/tomee-jaxrs/pom.xml
index 4679b64..449bf65 100644
--- a/tomee/tomee-jaxrs/pom.xml
+++ b/tomee/tomee-jaxrs/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/tomee/tomee-jaxrs/src/main/java/org/apache/tomee/webservices/TomcatRsRegistry.java b/tomee/tomee-jaxrs/src/main/java/org/apache/tomee/webservices/TomcatRsRegistry.java
index dabb20d..9f465ad 100644
--- a/tomee/tomee-jaxrs/src/main/java/org/apache/tomee/webservices/TomcatRsRegistry.java
+++ b/tomee/tomee-jaxrs/src/main/java/org/apache/tomee/webservices/TomcatRsRegistry.java
@@ -57,8 +57,8 @@
     }
 
     @Override
-    public AddressInfo createRsHttpListener(String root, HttpListener listener, ClassLoader classLoader, String completePath, String virtualHost) {
-        String path = completePath;
+    public AddressInfo createRsHttpListener(String webContext, HttpListener listener, ClassLoader classLoader, String completePath, String virtualHost) {
+        String path = webContext;
         if (path == null) {
             throw new NullPointerException("contextRoot is null");
         }
@@ -66,27 +66,6 @@
             throw new NullPointerException("listener is null");
         }
 
-        // parsing could be optimized a bit...
-        String realRoot = root;
-        if (!root.startsWith("/")) {
-            realRoot = "/" + root;
-        }
-        if (realRoot.length() > 1) {
-            int idx = realRoot.substring(1).indexOf('/');
-            if (idx > 0) {
-                realRoot = realRoot.substring(0, idx + 1);
-            }
-        }
-        if (!path.startsWith("/")) {
-            path = "/" + path;
-        }
-        if (!"/".equals(realRoot)) {
-            path = path.substring(realRoot.length(), path.length());
-        }
-        if (!path.startsWith("/")) {
-            path = "/" + path;
-        }
-
         // find the existing host (we do not auto-create hosts)
         if (virtualHost == null) virtualHost = engine.getDefaultHost();
         Container host = engine.findChild(virtualHost);
@@ -95,14 +74,14 @@
         }
 
         // get the webapp context
-        Context context = (Context) host.findChild(realRoot);
+        Context context = (Context) host.findChild(webContext);
 
-        if (context == null && "/".equals(realRoot)) { // ROOT
+        if (context == null && "/".equals(webContext)) { // ROOT
             context = (Context) host.findChild("");
         }
 
         if (context == null) {
-            throw new IllegalStateException("Invalid context '" + realRoot + "'.  Cannot find context in host " + host.getName());
+            throw new IllegalStateException("Invalid context '" + webContext + "'.  Cannot find context in host " + host.getName());
         }
 
         Wrapper wrapper = context.createWrapper();
@@ -110,22 +89,28 @@
         wrapper.setName(name);
         wrapper.setServletClass(RsServlet.class.getName());
 
-        final String mapping = path.replace("/.*", "/*");
         context.addChild(wrapper);
-        wrapper.addMapping(mapping);
-        context.addServletMapping(mapping, name);
+        wrapper.addMapping(removeWebContext(webContext, completePath));
+        context.addServletMapping(completePath, name);
 
         final String listenerId = wrapper.getName() + RsServlet.class.getName() + listener.hashCode();
         wrapper.addInitParameter(HttpListener.class.getName(), listenerId);
         context.getServletContext().setAttribute(listenerId, listener);
 
-        path = address(connectors, host.getName(), realRoot);
+        path = address(connectors, host.getName(), webContext);
         final String key = address(connectors, host.getName(), completePath);
         listeners.put(key, listener);
 
         return new AddressInfo(path, key);
     }
 
+    private static String removeWebContext(final String webContext, final String completePath) {
+        if (webContext == null) {
+            return completePath;
+        }
+        return completePath.substring(webContext.length());
+    }
+
     private static String address(final Collection<Connector> connectors, final String host, final String path) {
         List<String> addresses = new ArrayList<String>();
         for (Connector connector : connectors) {
diff --git a/tomee/tomee-jdbc/pom.xml b/tomee/tomee-jdbc/pom.xml
index 8cde6da..04d05d3 100644
--- a/tomee/tomee-jdbc/pom.xml
+++ b/tomee/tomee-jdbc/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/tomee/tomee-loader/pom.xml b/tomee/tomee-loader/pom.xml
index c7f8e01..b0e6788 100644
--- a/tomee/tomee-loader/pom.xml
+++ b/tomee/tomee-loader/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>tomee-loader</artifactId>
diff --git a/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/EmbeddedJarScanner.java b/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/EmbeddedJarScanner.java
index 9068d75..71b2291 100644
--- a/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/EmbeddedJarScanner.java
+++ b/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/EmbeddedJarScanner.java
@@ -19,6 +19,7 @@
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 import org.apache.openejb.config.NewLoaderLogic;
+import org.apache.openejb.util.URLs;
 import org.apache.tomcat.JarScanner;
 import org.apache.tomcat.JarScannerCallback;
 import org.apache.tomcat.util.res.StringManager;
@@ -69,6 +70,10 @@
             // scan = scan.exclude(".*/WEB-INF/lib/.*"); // doing it simply prevent ServletContainerInitializer to de discovered
 
             for (URL url : scan) {
+                if (isWebInfClasses(url)) {
+                    continue;
+                }
+
                 // Need to scan this JAR
                 if (log.isDebugEnabled()) {
                     log.debug(sm.getString("jarScan.webinflibJarScan", url.toExternalForm()));
@@ -85,6 +90,16 @@
         }
     }
 
+    private static boolean isWebInfClasses(final URL url) {
+        final File file = URLs.toFile(url);
+        if (file == null || !file.exists() || ! "classes".equals(file.getName())) {
+            return false;
+        }
+
+        final File webInf = file.getParentFile();
+        return webInf != null && !(!webInf.exists() || !"WEB-INF".equals(webInf.getName()));
+    }
+
     /*
      * Scan a URL for JARs with the optional extensions to look at all files
      * and all directories.
diff --git a/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java b/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java
index c1ec03e..74cbdc9 100644
--- a/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java
+++ b/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java
@@ -41,16 +41,16 @@
 
 /**
  * The sole purpose of this class is to call the {@link TomcatEmbedder#embed} method
- *
+ * <p/>
  * This is an alternate way to load the Tomcat integration
  * This approach is mutually exclussive to the {@link LoaderServlet}
- *
+ * <p/>
  * This class does nothing more than scrape around in
  * Tomcat and look for the tomee.war so it can call the embedder
- *
+ * <p/>
  * This class can be installed in the Tomcat server.xml as an alternate
  * way to bootstrap OpenEJB into Tomcat.  The benefit of this is that
- * OpenEJB is guaranteed to start before all webapps. 
+ * OpenEJB is guaranteed to start before all webapps.
  */
 public class OpenEJBListener implements LifecycleListener {
     private static final Logger LOGGER = Logger.getLogger(OpenEJBListener.class.getName());
@@ -62,18 +62,19 @@
         return listenerInstalled;
     }
 
-    public void lifecycleEvent(LifecycleEvent event) {
+    @Override
+    public void lifecycleEvent(final LifecycleEvent event) {
         // only install once
         if (listenerInstalled || !Lifecycle.AFTER_INIT_EVENT.equals(event.getType())) return;
-        
+
         try {
-	        File webappDir = findOpenEjbWar();
+            File webappDir = findOpenEjbWar();
             if (webappDir == null && event.getSource() instanceof StandardServer) {
                 final StandardServer server = (StandardServer) event.getSource();
                 webappDir = tryToFindAndExtractWar(server);
                 if (webappDir != null) { // we are using webapp startup
                     final File exploded = extractDirectory(webappDir);
-                    if (webappDir != null) {
+                    if (exploded != null) {
                         extract(webappDir, exploded);
                     }
                     webappDir = exploded;
@@ -84,7 +85,7 @@
                 LOGGER.info("found the tomee webapp on " + webappDir.getPath());
                 final Properties properties = new Properties();
                 properties.setProperty("tomee.war", webappDir.getAbsolutePath());
-                properties.setProperty("openejb.embedder.source", getClass().getSimpleName());
+                properties.setProperty("openejb.embedder.source", OpenEJBListener.class.getSimpleName());
                 TomcatEmbedder.embed(properties, StandardServer.class.getClassLoader());
                 listenerInstalled = true;
             } else if (logWebappNotFound) {
@@ -111,18 +112,18 @@
             return new File(System.getProperty("openejb.war"));
         }
 
-        for (Service service : source.findServices()) {
+        for (final Service service : source.findServices()) {
             final Container container = service.getContainer();
             if (container instanceof StandardEngine) {
                 final StandardEngine engine = (StandardEngine) container;
-                for (Container child : engine.findChildren()) {
+                for (final Container child : engine.findChildren()) {
                     if (child instanceof StandardHost) {
                         final StandardHost host = (StandardHost) child;
                         final File base = hostDir(System.getProperty("catalina.base"), host.getAppBase());
 
                         final File[] files = base.listFiles();
                         if (files != null) {
-                            for (File file : files) {
+                            for (final File file : files) {
                                 if (isTomEEWar(file)) {
                                     return file;
                                 }
@@ -150,39 +151,40 @@
 
     private static File findOpenEjbWar() {
         // in Tomcat 5.5 the OpenEjb war is in the server/webapps director
-        String catalinaBase = System.getProperty("catalina.base");
-        File serverWebapps = new File(catalinaBase, "server/webapps");
+        final String catalinaBase = System.getProperty("catalina.base");
+        final File serverWebapps = new File(catalinaBase, "server/webapps");
         File openEjbWar = findOpenEjbWar(serverWebapps);
         if (openEjbWar != null) {
             return openEjbWar;
         }
-		        
-		try {
-			// in Tomcat 6 the OpenEjb war is normally in webapps, but we just
-			// scan all hosts directories
-			for (Service service : TomcatHelper.getServer().findServices()) {
-				Container container = service.getContainer();
-				if (container instanceof StandardEngine) {
-					StandardEngine engine = (StandardEngine) container;
-					for (Container child : engine.findChildren()) {
-						if (child instanceof StandardHost) {
-							StandardHost host = (StandardHost) child;
-							final File hostDir = hostDir(catalinaBase, host.getAppBase());
 
-							openEjbWar = findOpenEjbWar(hostDir);
-							if (openEjbWar != null) {
-								return openEjbWar;
-							} else {
-								return findOpenEjbWar(host);
-							}
-						}
-					}
-				}
-			}
-		} catch (Exception e) {
-		}      
-		
-		return null;
+        try {
+            // in Tomcat 6 the OpenEjb war is normally in webapps, but we just
+            // scan all hosts directories
+            for (final Service service : TomcatHelper.getServer().findServices()) {
+                final Container container = service.getContainer();
+                if (container instanceof StandardEngine) {
+                    final StandardEngine engine = (StandardEngine) container;
+                    for (final Container child : engine.findChildren()) {
+                        if (child instanceof StandardHost) {
+                            final StandardHost host = (StandardHost) child;
+                            final File hostDir = hostDir(catalinaBase, host.getAppBase());
+
+                            openEjbWar = findOpenEjbWar(hostDir);
+                            if (openEjbWar != null) {
+                                return openEjbWar;
+                            } else {
+                                return findOpenEjbWar(host);
+                            }
+                        }
+                    }
+                }
+            }
+        } catch (Exception e) {
+            LOGGER.log(Level.WARNING, "OpenEJBListener.findOpenEjbWar: " + e.getMessage());
+        }
+
+        return null;
     }
 
     private static File hostDir(final String catalinaBase, final String appBase) {
@@ -193,42 +195,43 @@
         return hostDir;
     }
 
-    private static File findOpenEjbWar(StandardHost standardHost) {
-    	//look for openejb war in a Tomcat context
-    	for(Container container : standardHost.findChildren()) {
-    		if(container instanceof StandardContext) {
-    			StandardContext standardContext = (StandardContext)container;
-    			File contextDocBase = new File(standardContext.getDocBase());
+    private static File findOpenEjbWar(final StandardHost standardHost) {
+        //look for openejb war in a Tomcat context
+        for (final Container container : standardHost.findChildren()) {
+            if (container instanceof StandardContext) {
+                final StandardContext standardContext = (StandardContext) container;
+                File contextDocBase = new File(standardContext.getDocBase());
                 if (!contextDocBase.isDirectory() && standardContext.getOriginalDocBase() != null) {
                     contextDocBase = new File(standardContext.getOriginalDocBase());
                 }
-    			if(contextDocBase.isDirectory()) {
-	    			File openEjbWar = findOpenEjbWarInContext(contextDocBase);
-	    	        if (openEjbWar != null) {
-	    	            return openEjbWar;
-	    	        }
-    			}
-    		}
-    	}
-    	return null;
+                if (contextDocBase.isDirectory()) {
+                    final File openEjbWar = findOpenEjbWarInContext(contextDocBase);
+                    if (openEjbWar != null) {
+                        return openEjbWar;
+                    }
+                }
+            }
+        }
+        return null;
     }
 
-    private static File findOpenEjbWar(File hostDir) {
+    private static File findOpenEjbWar(final File hostDir) {
         if (!hostDir.isDirectory()) {
             return null;
         }
 
         // iterate over the contexts
-        for (File contextDir : hostDir.listFiles()) {
-        	File foundContextDir = findOpenEjbWarInContext(contextDir);
-        	if(foundContextDir != null) {
-        		return foundContextDir;
-        	}
+        final File[] files = hostDir.listFiles();
+        if (null != files) for (final File contextDir : files) {
+            final File foundContextDir = findOpenEjbWarInContext(contextDir);
+            if (foundContextDir != null) {
+                return foundContextDir;
+            }
         }
         return null;
     }
-     
-    private static File findOpenEjbWarInContext(File contextDir) {
+
+    private static File findOpenEjbWarInContext(final File contextDir) {
         // this should be a webapp
         if (!new File(contextDir, "WEB-INF").exists()) {
             return null;
@@ -236,14 +239,14 @@
 
         // this should be the openejb war...
         // make sure it has a lib directory
-        File webInfLib = new File(contextDir, "lib");
+        final File webInfLib = new File(contextDir, "lib");
         if (!webInfLib.isDirectory()) {
-             return null;
+            return null;
         }
         // iterate over the libs looking for the openejb-loader-*.jar
         final File[] files = webInfLib.listFiles();
         if (files != null) {
-            for (File file : files) {
+            for (final File file : files) {
                 if (file.getName().startsWith("tomee-catalina-") && file.getName().endsWith(".jar")) {
                     return contextDir;
                 }
@@ -260,20 +263,24 @@
 
         LOGGER.info("Extracting openejb webapp from " + src.getAbsolutePath() + " to " + dest.getAbsolutePath());
 
-        dest.mkdirs();
+        if (!dest.mkdirs()) {
+            throw new IOException("Failed to create: " + dest);
+        }
 
         JarFile jarFile = null;
         InputStream input = null;
         try {
             jarFile = new JarFile(src);
-            Enumeration jarEntries = jarFile.entries();
+            final Enumeration jarEntries = jarFile.entries();
             while (jarEntries.hasMoreElements()) {
-                JarEntry jarEntry = (JarEntry) jarEntries.nextElement();
-                String name = jarEntry.getName();
-                int last = name.lastIndexOf('/');
+                final JarEntry jarEntry = (JarEntry) jarEntries.nextElement();
+                final String name = jarEntry.getName();
+                final int last = name.lastIndexOf('/');
                 if (last >= 0) {
-                    File parent = new File(dest, name.substring(0, last));
-                    parent.mkdirs();
+                    final File parent = new File(dest, name.substring(0, last));
+                    if (!parent.mkdirs()) {
+                        throw new IOException("Failed to create: " + parent);
+                    }
                 }
                 if (name.endsWith("/")) {
                     continue;
@@ -284,9 +291,9 @@
                 BufferedOutputStream output = null;
                 try {
                     output = new BufferedOutputStream(new FileOutputStream(file));
-                    byte buffer[] = new byte[2048];
+                    final byte[] buffer = new byte[2048];
                     while (true) {
-                        int n = input.read(buffer);
+                        final int n = input.read(buffer);
                         if (n <= 0)
                             break;
                         output.write(buffer, 0, n);
@@ -301,9 +308,11 @@
                     }
                 }
 
-                long lastModified = jarEntry.getTime();
+                final long lastModified = jarEntry.getTime();
                 if (lastModified != -1 && lastModified != 0 && file != null) {
-                    file.setLastModified(lastModified);
+                    if (!file.setLastModified(lastModified)) {
+                        LOGGER.log(Level.WARNING, "Failed to set last modified time on: " + file.getAbsolutePath());
+                    }
                 }
 
                 input.close();
diff --git a/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomEEJarScanner.java b/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomEEJarScanner.java
index 4b28251..5936972 100644
--- a/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomEEJarScanner.java
+++ b/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomEEJarScanner.java
@@ -39,7 +39,6 @@
 import java.net.URL;
 import java.net.URLConnection;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.Set;
 import java.util.StringTokenizer;
 
@@ -56,34 +55,32 @@
 
     static {
         final Set<String> defaultJarsToSkip = new HashSet<String>();
-        String jarList = System.getProperty(Constants.SKIP_JARS_PROPERTY);
+        final String jarList = System.getProperty(Constants.SKIP_JARS_PROPERTY);
         if (jarList != null) {
-            StringTokenizer tokenizer = new StringTokenizer(jarList, ",");
+            final StringTokenizer tokenizer = new StringTokenizer(jarList, ",");
             while (tokenizer.hasMoreElements()) {
                 defaultJarsToSkip.add(tokenizer.nextToken());
             }
         }
 
         final Set<String[]> ignoredJarsTokens = new HashSet<String[]>();
-        for (String pattern : defaultJarsToSkip) {
+        for (final String pattern : defaultJarsToSkip) {
             ignoredJarsTokens.add(Matcher.tokenizePathAsArray(pattern));
         }
         DEFAULT_JARS_TO_SKIP = ignoredJarsTokens;
     }
 
     @Override
-    public void scan(ServletContext context, ClassLoader classLoader, JarScannerCallback callback, Set<String> jarsToIgnore) {
+    public void scan(final ServletContext context, final ClassLoader classLoader, final JarScannerCallback callback, final Set<String> jarsToIgnore) {
         if ("FragmentJarScannerCallback".equals(callback.getClass().getSimpleName())) {
-            EmbeddedJarScanner embeddedJarScanner = new EmbeddedJarScanner();
+            final EmbeddedJarScanner embeddedJarScanner = new EmbeddedJarScanner();
             embeddedJarScanner.scan(context, classLoader, callback, jarsToIgnore);
         } else if ("TldJarScannerCallback".equals(callback.getClass().getSimpleName())) {
 
             // Scan WEB-INF/lib
-            Set<String> dirList = context.getResourcePaths(Constants.WEB_INF_LIB);
+            final Set<String> dirList = context.getResourcePaths(Constants.WEB_INF_LIB);
             if (dirList != null) {
-                Iterator<String> it = dirList.iterator();
-                while (it.hasNext()) {
-                    String path = it.next();
+                for (final String path : dirList) {
                     if (path.endsWith(Constants.JAR_EXT) &&
                             !Matcher.matchPath(DEFAULT_JARS_TO_SKIP,
                                     path.substring(path.lastIndexOf('/') + 1))) {
@@ -92,13 +89,13 @@
                         try {
                             // File URLs are always faster to work with so use them
                             // if available.
-                            String realPath = context.getRealPath(path);
+                            final String realPath = context.getRealPath(path);
                             if (realPath == null) {
                                 url = context.getResource(path);
                             } else {
                                 url = (new File(realPath)).toURI().toURL();
                             }
-                            process(callback, url);
+                            this.process(callback, url);
                         } catch (IOException e) {
                             log.warn(sm.getString("jarScan.webinflibFail", url), e);
                         }
@@ -111,7 +108,7 @@
             }
 
             // Scan the classpath
-            if (isScanClassPath()) {
+            if (this.isScanClassPath()) {
                 if (log.isTraceEnabled()) {
                     log.trace(sm.getString("jarScan.classloaderStart"));
                 }
@@ -121,10 +118,10 @@
                     final ClassLoader loader = Thread.currentThread().getContextClassLoader();
                     final Set<URL> tldFileUrls = TldScanner.scan(loader);
 
-                    final Set<URL> jarUlrs = discardFilePaths(tldFileUrls);
+                    final Set<URL> jarUlrs = this.discardFilePaths(tldFileUrls);
 
-                    for (URL url : jarUlrs) {
-                        String jarName = getJarName(url);
+                    for (final URL url : jarUlrs) {
+                        final String jarName = this.getJarName(url);
 
                         // Skip JARs known not to be interesting and JARs
                         // in WEB-INF/lib we have already scanned
@@ -134,7 +131,7 @@
                                 log.debug(sm.getString("jarScan.classloaderJarScan", url));
                             }
                             try {
-                                process(callback, url);
+                                this.process(callback, url);
                             } catch (IOException ioe) {
                                 log.warn(sm.getString(
                                         "jarScan.classloaderFail", url), ioe);
@@ -181,15 +178,15 @@
 //        super.scan(context, classLoader, callback, newIgnores);
     }
 
-    private Set<URL> discardFilePaths(Set<URL> tldFileUrls) {
+    private Set<URL> discardFilePaths(final Set<URL> tldFileUrls) {
         final Set<String> jarPaths = new HashSet<String>();
 
-        for (URL tldFileUrl : tldFileUrls) {
+        for (final URL tldFileUrl : tldFileUrls) {
             jarPaths.add(URLs.toFilePath(tldFileUrl));
         }
 
         final Set<URL> jars = new HashSet<URL>();
-        for (String jarPath : jarPaths) {
+        for (final String jarPath : jarPaths) {
             try {
                 final URL url = new File(jarPath).toURI().toURL();
                 jars.add(url);
@@ -204,7 +201,7 @@
     * Scan a URL for JARs with the optional extensions to look at all files
     * and all directories.
     */
-    private void process(JarScannerCallback callback, URL url) throws IOException {
+    private void process(final JarScannerCallback callback, final URL url) throws IOException {
 
         if (log.isTraceEnabled()) {
             log.trace(sm.getString("jarScan.jarUrlStart", url));
@@ -231,13 +228,13 @@
 
                         final File f = new File(url.toURI());
 
-                        if (f.isFile() && isScanAllFiles()) {
+                        if (f.isFile() && this.isScanAllFiles()) {
 
                             // Treat this file as a JAR
                             final URL jarURL = new URL("jar:" + urlStr + "!/");
                             callback.scan((JarURLConnection) jarURL.openConnection());
 
-                        } else if (f.isDirectory() && isScanAllDirectories()) {
+                        } else if (f.isDirectory() && this.isScanAllDirectories()) {
 
                             final File metainf = new File(f.getAbsoluteFile() + File.separator + "META-INF");
 
@@ -247,7 +244,7 @@
                         }
                     } catch (URISyntaxException e) {
                         // Wrap the exception and re-throw
-                        IOException ioe = new IOException();
+                        final IOException ioe = new IOException();
                         ioe.initCause(e);
                         throw ioe;
                     }
@@ -260,17 +257,17 @@
     /*
      * Extract the JAR name, if present, from a URL
      */
-    private String getJarName(URL url) {
+    private String getJarName(final URL url) {
 
         String name = null;
 
-        String path = url.getPath();
-        int end = path.indexOf(Constants.JAR_EXT);
+        final String path = url.getPath();
+        final int end = path.indexOf(Constants.JAR_EXT);
         if (end != -1) {
-            int start = path.lastIndexOf('/', end);
+            final int start = path.lastIndexOf('/', end);
             name = path.substring(start + 1, end + 4);
-        } else if (isScanAllDirectories()) {
-            int start = path.lastIndexOf('/');
+        } else if (this.isScanAllDirectories()) {
+            final int start = path.lastIndexOf('/');
             name = path.substring(start + 1);
         }
 
diff --git a/tomee/tomee-mojarra/pom.xml b/tomee/tomee-mojarra/pom.xml
index e80b0a9..e9e9ab2 100644
--- a/tomee/tomee-mojarra/pom.xml
+++ b/tomee/tomee-mojarra/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/tomee/tomee-myfaces/pom.xml b/tomee/tomee-myfaces/pom.xml
index f19de8f..87cd0e0 100644
--- a/tomee/tomee-myfaces/pom.xml
+++ b/tomee/tomee-myfaces/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/tomee/tomee-plus-webapp/pom.xml b/tomee/tomee-plus-webapp/pom.xml
index 5da7498..ae49daf 100644
--- a/tomee/tomee-plus-webapp/pom.xml
+++ b/tomee/tomee-plus-webapp/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
diff --git a/tomee/tomee-util/pom.xml b/tomee/tomee-util/pom.xml
index 11ff73d..3237dce 100644
--- a/tomee/tomee-util/pom.xml
+++ b/tomee/tomee-util/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/tomee/tomee-webapp/pom.xml b/tomee/tomee-webapp/pom.xml
index 58c7884..0237467 100644
--- a/tomee/tomee-webapp/pom.xml
+++ b/tomee/tomee-webapp/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>tomee-webapp</artifactId>
@@ -31,9 +31,20 @@
   <name>OpenEJB :: TomEE :: Webapp</name>
   <build>
     <plugins>
+      <plugin> <!-- the jar is only for resources and other classes are for the gui -->
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <version>2.4</version>
+        <configuration>
+          <includes>
+            <include>META-INF/**/*</include>
+            <include>juli.properties</include>
+          </includes>
+        </configuration>
+      </plugin>
       <plugin>
         <artifactId>maven-assembly-plugin</artifactId>
-		    <version>2.2.2</version>
+	      <version>2.2.2</version>
         <executions>
           <execution>
             <id>war</id>
@@ -212,7 +223,7 @@
       <groupId>org.apache.openejb</groupId>
       <artifactId>tomee-common</artifactId>
       <version>${tomee.version}</version>
-      <scope>runtime</scope>
+      <scope>compile</scope>
       <exclusions>
         <exclusion>
           <groupId>org.apache.openejb</groupId>
diff --git a/tomee/tomee-webapp/src/main/assembly/war.xml b/tomee/tomee-webapp/src/main/assembly/war.xml
index c712e74..079a3cb 100644
--- a/tomee/tomee-webapp/src/main/assembly/war.xml
+++ b/tomee/tomee-webapp/src/main/assembly/war.xml
@@ -40,13 +40,14 @@
       </includes>
     </fileSet>
     <fileSet>
-      <directory>${basedir}/src/main/webapp</directory>
+      <directory>${project.basedir}/src/main/webapp</directory>
       <outputDirectory>/</outputDirectory>
     </fileSet>
     <fileSet>
-      <directory>${basedir}/target/classes</directory>
+      <directory>${project.basedir}/target/classes</directory>
       <outputDirectory>/</outputDirectory>
       <excludes>
+        <exclude>META-INF/org.apache.tomee/**</exclude>
         <exclude>org/**</exclude>
         <exclude>**/LICENSE</exclude>
         <exclude>**/NOTICE</exclude>
@@ -58,6 +59,7 @@
       <directory>${basedir}/target/classes</directory>
       <outputDirectory>WEB-INF/classes</outputDirectory>
       <excludes>
+        <exclude>**/META-INF/org.apache.tomee/service-jar.xml</exclude>
         <exclude>**/LICENSE</exclude>
         <exclude>**/NOTICE</exclude>
         <exclude>**/LICENSE.txt</exclude>
diff --git a/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/Application.java b/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/Application.java
index 12ac31f..5bdcd37 100644
--- a/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/Application.java
+++ b/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/Application.java
@@ -23,6 +23,7 @@
 import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
+import java.io.File;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
@@ -30,6 +31,7 @@
 public class Application {
     private static final Application INSTANCE = new Application();
 
+    private String rootPath;
     private final Map<String, Session> sessions = new HashMap<String, Session>();
 
     private Application() {
@@ -40,6 +42,14 @@
         return INSTANCE;
     }
 
+    public String getRootPath() {
+        return rootPath;
+    }
+
+    public void setRootPath(String rootPath) {
+        this.rootPath = rootPath;
+    }
+
     public Session getExistingSession(String id) {
         Session session;
         synchronized (this.sessions) {
@@ -53,7 +63,7 @@
         synchronized (this.sessions) {
             session = this.sessions.get(id);
             if (session == null) {
-                session = new Session();
+                session = new Session(new File(rootPath));
                 this.sessions.put(id, session);
             }
         }
@@ -68,15 +78,21 @@
 
     public class Session {
         private Context context;
+        private final File rootFolder;
+
+        public Session(File rootFolder) {
+            this.rootFolder = rootFolder;
+        }
 
         public Context getContext() {
             return context;
         }
 
-        public Context login(String user, String pass) {
+        public Context login(String user, String pass, String protocol, String port) {
+            final String addr = protocol + "://127.0.0.1:" + port + "/" + this.rootFolder.getName() + "/ejb";
             final Properties props = new Properties();
             props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
-            props.put("java.naming.provider.url", "http://127.0.0.1:8080/tomee/ejb");
+            props.put("java.naming.provider.url", addr);
             props.setProperty(Context.SECURITY_PRINCIPAL, user);
             props.setProperty(Context.SECURITY_CREDENTIALS, pass);
             try {
diff --git a/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/GetStatus.java b/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/GetStatus.java
new file mode 100644
index 0000000..decc453
--- /dev/null
+++ b/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/GetStatus.java
@@ -0,0 +1,77 @@
+/*

+ * 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.tomee.webapp.command.impl;

+

+import org.apache.tomee.installer.Installer;

+import org.apache.tomee.installer.Paths;

+import org.apache.tomee.webapp.Application;

+import org.apache.tomee.webapp.command.Command;

+import org.apache.tomee.webapp.command.IsProtected;

+

+import java.io.File;

+import java.util.HashMap;

+import java.util.Map;

+

+@IsProtected

+public class GetStatus implements Command {

+

+    @Override

+    public Object execute(final Map<String, Object> params) throws Exception {

+        final String path = Application.getInstance().getRootPath();

+        File openejbWarDir = null;

+        if (path != null) {

+            openejbWarDir = new File(path);

+        }

+        final Paths paths = new Paths(openejbWarDir);

+

+        final Map<String, Object> json = new HashMap<String, Object>();

+        json.put("isListenerInstalled", Installer.isListenerInstalled());

+        json.put("isAgentInstalled", Installer.isAgentInstalled());

+

+

+        final Map<String, String> strPaths = new HashMap<String, String>();

+        strPaths.put("catalina-conf", getSafePath(paths.getCatalinaConfDir()));

+        strPaths.put("catalina-lib", getSafePath(paths.getCatalinaLibDir()));

+        strPaths.put("catalina-bin", getSafePath(paths.getCatalinaBinDir()));

+        strPaths.put("catalina-catalina-sh", getSafePath(paths.getCatalinaShFile()));

+        strPaths.put("catalina-catalina-bat", getSafePath(paths.getCatalinaBatFile()));

+        strPaths.put("openEJB-lib", getSafePath(paths.getOpenEJBLibDir()));

+        strPaths.put("openEJB-loader-jar", getSafePath(paths.getOpenEJBTomcatLoaderJar()));

+        strPaths.put("openEJB-javaagent-jar", getSafePath(paths.getOpenEJBJavaagentJar()));

+

+

+        final Map<String, String> strMainPaths = new HashMap<String, String>();

+        strMainPaths.put("catalina-home", getSafePath(paths.getCatalinaHomeDir()));

+        strMainPaths.put("catalina-base", getSafePath(paths.getCatalinaBaseDir()));

+        strMainPaths.put("catalina-server-xml", getSafePath(paths.getServerXmlFile()));

+

+        json.put("paths", strPaths);

+        json.put("mainPaths", strMainPaths);

+

+        final Installer installer = new Installer(paths);

+        json.put("installerStatus", installer.getStatus());

+        return json;

+    }

+

+    private String getSafePath(File file) {

+        if (file == null) {

+            return "";

+        }

+        return file.getPath();

+    }

+}

diff --git a/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/Login.java b/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/Login.java
index 221b634..1883318 100644
--- a/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/Login.java
+++ b/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/Login.java
@@ -31,10 +31,12 @@
         final Application.Session session = Application.getInstance().getSession(sessionId);
         final String user = (String) params.get("user");
         final String pass = (String) params.get("pass");
+        final String port = (String) params.get("port");
+        final String protocol = (String) params.get("protocol");
 
         final Map<String, Object> result = new HashMap<String, Object>();
 
-        if (session.login(user, pass) == null) {
+        if (session.login(user, pass, protocol, port) == null) {
             result.put("loginSuccess", Boolean.FALSE);
         } else {
             result.put("loginSuccess", Boolean.TRUE);
diff --git a/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/RunInstaller.java b/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/RunInstaller.java
new file mode 100644
index 0000000..9377705
--- /dev/null
+++ b/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/command/impl/RunInstaller.java
@@ -0,0 +1,141 @@
+/*

+ * 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.tomee.webapp.command.impl;

+

+import org.apache.tomee.installer.Installer;

+import org.apache.tomee.installer.Paths;

+import org.apache.tomee.webapp.Application;

+import org.apache.tomee.webapp.command.Command;

+import org.apache.tomee.webapp.command.IsProtected;

+

+import javax.naming.Context;

+import javax.naming.InitialContext;

+import java.io.File;

+import java.lang.reflect.Method;

+import java.util.HashMap;

+import java.util.Map;

+import java.util.Properties;

+

+@IsProtected

+public class RunInstaller implements Command {

+

+    @Override

+    public Object execute(final Map<String, Object> params) throws Exception {

+        final String path = Application.getInstance().getRootPath();

+        File openejbWarDir = null;

+        if (path != null) {

+            openejbWarDir = new File(path);

+        }

+        final Paths paths = new Paths(openejbWarDir);

+        final Installer installer = new Installer(paths);

+

+        final Map<String, Object> json = new HashMap<String, Object>();

+

+        if (Installer.Status.NONE.equals(installer.getStatus())) {

+            paths.reset();

+            installer.reset();

+

+            if (Boolean.valueOf(String.valueOf(params.get("auto")))) {

+                paths.setCatalinaHomeDir(System.getProperty("catalina.home"));

+                paths.setCatalinaBaseDir(System.getProperty("catalina.base"));

+                paths.setServerXmlFile(System.getProperty("catalina.base") + "/conf/server.xml");

+            } else {

+                paths.setCatalinaHomeDir((String) params.get("catalina-home"));

+                paths.setCatalinaBaseDir((String) params.get("catalina-base"));

+                paths.setServerXmlFile((String) params.get("catalina-server-xml"));

+            }

+

+            if (paths.verify()) {

+                installer.installAll();

+            }

+        }

+        json.put("status", installer.getStatus());

+        json.put("errors", installer.getAlerts().getErrors());

+        json.put("warnings", installer.getAlerts().getWarnings());

+        json.put("infos", installer.getAlerts().getInfos());

+

+        final Map<String, Object> test = new HashMap<String, Object>();

+        json.put("tests", test);

+

+        {

+            test.put("hasHome", false);

+            test.put("doesHomeExist", false);

+            test.put("isHomeDirectory", false);

+            test.put("hasLibDirectory", false);

+

+            final String homePath = System.getProperty("openejb.home");

+            if (homePath != null) {

+                test.put("hasHome", true);

+                final File homeDir = new File(homePath);

+                test.put("doesHomeExist", homeDir.exists());

+                if (homeDir.exists()) {

+                    test.put("isHomeDirectory", homeDir.isDirectory());

+                    final File libDir = new File(homeDir, "lib");

+                    test.put("hasLibDirectory", libDir.exists());

+                }

+            }

+        }

+

+        {

+            test.put("wereTheOpenEJBClassesInstalled", false);

+            test.put("wereTheEjbClassesInstalled", false);

+            test.put("wasOpenEJBStarted", false);

+            test.put("canILookupAnything", false);

+

+            try {

+                final ClassLoader myLoader = this.getClass().getClassLoader();

+                Class.forName("org.apache.openejb.OpenEJB", true, myLoader);

+                test.put("wereTheOpenEJBClassesInstalled", true);

+            } catch (Exception e) {

+                // noop

+            }

+

+            try {

+                Class.forName("javax.ejb.EJBHome", true, this.getClass().getClassLoader());

+                test.put("wereTheEjbClassesInstalled", true);

+            } catch (Exception e) {

+                // noop

+            }

+

+            try {

+                final Class openejb = Class.forName("org.apache.openejb.OpenEJB", true, this.getClass().getClassLoader());

+                final Method isInitialized = openejb.getDeclaredMethod("isInitialized");

+                final Boolean running = (Boolean) isInitialized.invoke(openejb);

+                test.put("wasOpenEJBStarted", running);

+            } catch (Exception e) {

+                // noop

+            }

+

+            try {

+                final Properties p = new Properties();

+                p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");

+                p.put("openejb.loader", "embed");

+

+                final InitialContext ctx = new InitialContext(p);

+                final Object obj = ctx.lookup("");

+

+                if (obj.getClass().getName().equals("org.apache.openejb.core.ivm.naming.IvmContext")) {

+                    test.put("canILookupAnything", true);

+                }

+            } catch (Exception e) {

+                // noop

+            }

+        }

+        return json;

+    }

+}

diff --git a/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/listeners/SessionListener.java b/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/listeners/ApplicationListener.java
similarity index 63%
rename from tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/listeners/SessionListener.java
rename to tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/listeners/ApplicationListener.java
index 0fe4e28..e4b9101 100644
--- a/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/listeners/SessionListener.java
+++ b/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/listeners/ApplicationListener.java
@@ -19,21 +19,18 @@
 
 import org.apache.tomee.webapp.Application;
 
-import javax.servlet.http.HttpSessionEvent;
-import javax.servlet.http.HttpSessionListener;
-import java.util.HashMap;
-import java.util.Map;
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
 
-public class SessionListener implements HttpSessionListener {
-
+public class ApplicationListener implements ServletContextListener {
     @Override
-    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
-        Map<String, Object> objects = new HashMap<String, Object >();
-        httpSessionEvent.getSession().setAttribute("objects", objects);
+    public void contextInitialized(ServletContextEvent ev) {
+        final String rootPath = ev.getServletContext().getRealPath("/");
+        Application.getInstance().setRootPath(rootPath);
     }
 
     @Override
-    public void sessionDestroyed(HttpSessionEvent event) {
-        Application.getInstance().removeSession(event.getSession().getId());
+    public void contextDestroyed(ServletContextEvent servletContextEvent) {
+        //no-op
     }
 }
diff --git a/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/AutoInstallerServlet.java b/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/AutoInstallerServlet.java
new file mode 100644
index 0000000..394be15
--- /dev/null
+++ b/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/AutoInstallerServlet.java
@@ -0,0 +1,55 @@
+/*

+ * 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.tomee.webapp.servlet;

+

+import org.apache.tomee.webapp.JsonExecutor;

+import org.apache.tomee.webapp.command.impl.RunInstaller;

+

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+import java.io.IOException;

+import java.util.HashMap;

+import java.util.Map;

+

+

+public class AutoInstallerServlet extends HttpServlet {

+

+    @Override

+    protected void doPost(HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {

+        writeJson(req, resp);

+    }

+

+    @Override

+    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

+        writeJson(req, resp);

+    }

+

+    private void writeJson(final HttpServletRequest req, final HttpServletResponse resp) throws IOException {

+        JsonExecutor.execute(req, resp, new JsonExecutor.Executor() {

+            @Override

+            public void call(Map<String, Object> json) throws Exception {

+                final RunInstaller runInstaller = new RunInstaller();

+                final Map<String, Object> params = new HashMap<String, Object>();

+                params.put("auto", "true");

+                json.put("result", runInstaller.execute(params));

+            }

+        });

+    }

+}

diff --git a/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/CommandExecutorServlet.java b/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/CommandExecutorServlet.java
index b00ada8..5920608 100644
--- a/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/CommandExecutorServlet.java
+++ b/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/CommandExecutorServlet.java
@@ -31,6 +31,15 @@
 
     @Override
     protected void doPost(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
+        execute(req, resp);
+    }
+
+    @Override
+    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        execute(req, resp);
+    }
+
+    private void execute(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
         JsonExecutor.execute(req, resp, new JsonExecutor.Executor() {
             @Override
             public void call(Map<String, Object> json) throws Exception {
@@ -40,4 +49,5 @@
             }
         });
     }
+
 }
diff --git a/tomee/tomee-webapp/src/main/resources/META-INF/org.apache.tomee/service-jar.xml b/tomee/tomee-webapp/src/main/resources/META-INF/org.apache.tomee/service-jar.xml
index f41fac1..f07fff1 100644
--- a/tomee/tomee-webapp/src/main/resources/META-INF/org.apache.tomee/service-jar.xml
+++ b/tomee/tomee-webapp/src/main/resources/META-INF/org.apache.tomee/service-jar.xml
@@ -45,4 +45,9 @@
   <ServiceProvider id="Default Mail Session" parent="org.apache.openejb:Default Mail Session"/>
   <ServiceProvider id="Default Remote Jndi Provider" parent="org.apache.openejb:Default Remote Jndi Provider"/>
   <ServiceProvider id="RoutedDataSource" parent="org.apache.openejb:RoutedDataSource"/>
+  <ServiceProvider id="ProvidedByTomcat" service="Resource" class-name="org.apache.tomee.catalina.TomcatResourceFactory" factory-name="create">
+    jndiName =
+    appName =
+    factory =
+  </ServiceProvider>
 </ServiceJar>
diff --git a/tomee/tomee-webapp/src/main/webapp/README.txt b/tomee/tomee-webapp/src/main/webapp/README.txt
index e15a29f..f4507ad 100644
--- a/tomee/tomee-webapp/src/main/webapp/README.txt
+++ b/tomee/tomee-webapp/src/main/webapp/README.txt
@@ -6,24 +6,13 @@
 ___________________
 Installation
 ===================
- 
- The OpenEJB Plugin for Tomcat installation process is fairly simple, so if
- you are comfortable with the command line and Tomcat, the following
- instructions will get you going ASAP; otherwise, please visit the OpenEJB
- Tomcat site for detailed instructions with examples.
 
-   http://openejb.apache.org/tomcat.html
-
-
- Assuming you have a normal working Tomcat 5.5 or 6.x installation:
+ Assuming you have a normal working Tomcat 7.x installation:
 
  1. Copy tomee.war to ${catalina.base}/webapps/tomee.war
         (Note: the file must be named tomee.war)
  2. Start Tomcat if it is not already running
- 3. (optional) Visit http://localhost:8080/openejb/installer and click the 'install' button
 
-___________________
-___________________
 Support
 ===================
  
@@ -32,9 +21,6 @@
  Follow this link for other subscription and list information:
  http://openejb.apache.org/mailing-lists.html
 
-
-
-
 =========================================================================
 ==  Cryptographic Software Notice                                      ==
 =========================================================================
diff --git a/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml b/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml
index 474c8c2..4935ed2 100644
--- a/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml
+++ b/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml
@@ -24,7 +24,7 @@
   <display-name>Tomee Application</display-name>
 
   <listener>
-    <listener-class>org.apache.tomee.webapp.listeners.SessionListener</listener-class>
+    <listener-class>org.apache.tomee.webapp.listeners.ApplicationListener</listener-class>
   </listener>
 
   <servlet>
@@ -50,7 +50,7 @@
   </servlet>
   <servlet>
     <servlet-name>InstallerServlet</servlet-name>
-    <servlet-class>org.apache.tomee.installer.InstallerServlet</servlet-class>
+    <servlet-class>org.apache.tomee.webapp.servlet.AutoInstallerServlet</servlet-class>
   </servlet>
   <servlet>
     <servlet-name>FileUploadServlet</servlet-name>
@@ -98,7 +98,7 @@
 
   <!-- ************************************************************************************** -->
   <welcome-file-list>
-    <welcome-file>index.jsp</welcome-file>
+    <welcome-file>index.html</welcome-file>
   </welcome-file-list>
 
   <error-page>
@@ -109,38 +109,4 @@
       /error
     </location>
   </error-page>
-  <!-- basic security to replace context.xml and allow remote accesses -->
-  <security-constraint>
-    <web-resource-collection>
-      <web-resource-name>Application</web-resource-name>
-      <url-pattern>/*</url-pattern>
-    </web-resource-collection>
-    <auth-constraint>
-      <role-name>tomee-admin</role-name>
-    </auth-constraint>
-  </security-constraint>
-
-  <!-- /ejb/* has no auth-constraint. It is has public access. -->
-  <security-constraint>
-    <web-resource-collection>
-      <web-resource-name>Server EJB</web-resource-name>
-      <url-pattern>/ejb/*</url-pattern>
-    </web-resource-collection>
-  </security-constraint>
-
-  <!-- /socket has no auth-constraint. It is has public access. -->
-  <security-constraint>
-    <web-resource-collection>
-      <web-resource-name>Socket</web-resource-name>
-      <url-pattern>/socket</url-pattern>
-    </web-resource-collection>
-  </security-constraint>
-
-  <login-config>
-    <auth-method>BASIC</auth-method>
-    <realm-name>TomEE Webapp</realm-name>
-  </login-config>
-  <security-role>
-    <role-name>tomee-admin</role-name>
-  </security-role>
 </web-app>
diff --git a/tomee/tomee-webapp/src/main/webapp/app/js/ApplicationController.js b/tomee/tomee-webapp/src/main/webapp/app/js/ApplicationController.js
index fdab536..45d2553 100644
--- a/tomee/tomee-webapp/src/main/webapp/app/js/ApplicationController.js
+++ b/tomee/tomee-webapp/src/main/webapp/app/js/ApplicationController.js
@@ -23,9 +23,10 @@
 TOMEE.ApplicationController = function () {

     "use strict";

 

-    var channel = TOMEE.ApplicationChannel,

-        model = TOMEE.ApplicationModel(),

-        view = TOMEE.ApplicationView();

+    var channel = TOMEE.ApplicationChannel;

+    var model = TOMEE.ApplicationModel();

+    var view = TOMEE.ApplicationView();

+    var growl = TOMEE.GrowlNotification();

 

     view.render();

 

@@ -46,7 +47,13 @@
         model.sendMessage({

             cmdName:'Login',

             user:data.user,

-            pass:data.pass

+            pass:data.pass,

+            port:window.location.port,

+            protocol: (function() {

+                var protocol = window.location.protocol;

+                protocol = protocol.replace(':', '');

+                return protocol;

+            })()

         });

     });

 

@@ -56,6 +63,12 @@
         });

     });

 

+    channel.bind('ui-actions', 'load-status', function () {

+        model.sendMessage({

+            cmdName:'GetStatus'

+        });

+    });

+

     channel.bind('ui-actions', 'log-file-selected', function (param) {

         model.sendMessage({

             cmdName:'GetLog',

@@ -75,8 +88,17 @@
         });

     });

 

-    channel.bind('server-command-callback', 'RunScript', function (data) {

-        //TODO: add growl notification

+    channel.bind('ui-actions', 'openejb-installer-clicked', function (data) {

+        data.cmdName = 'RunInstaller';

+        model.sendMessage(data);

+    });

+

+    channel.bind('server-command-callback-error', 'RunScript', function (data) {

+        growl.showNotification(TOMEE.I18N.get('application.console.run.error'), 'error');

+    });

+

+    channel.bind('ui-actions', 'show-notification', function (data) {

+        growl.showNotification(data.message, data.messageType);

     });

 

     channel.bind('server-command-callback', 'Logout', function (data) {

@@ -87,6 +109,20 @@
         model.connectSocket();

     });

 

+    channel.bind('server-command-callback-success', 'Login', function (params) {

+        if (params.output.loginSuccess) {

+            growl.showNotification(TOMEE.I18N.get('application.log.hello', {

+                userName:params.params.user

+            }), 'success');

+        } else {

+            growl.showNotification(TOMEE.I18N.get('application.log.bad'), 'error');

+        }

+    });

+

+    channel.bind('server-command-callback-error', 'Login', function (params) {

+        growl.showNotification(TOMEE.I18N.get('application.log.error'), 'error');

+    });

+

     return {

 

     };

diff --git a/tomee/tomee-webapp/src/main/webapp/app/js/ApplicationModel.js b/tomee/tomee-webapp/src/main/webapp/app/js/ApplicationModel.js
index bde48ef..c62bf28 100644
--- a/tomee/tomee-webapp/src/main/webapp/app/js/ApplicationModel.js
+++ b/tomee/tomee-webapp/src/main/webapp/app/js/ApplicationModel.js
@@ -24,10 +24,15 @@
 TOMEE.ApplicationModel = function () {

     "use strict";

 

-    var channel = TOMEE.ApplicationChannel,

-        appSocket = null,

-        reconnectTask = TOMEE.DelayedTask(),

-        reconnectDelay = 5000;

+    var channel = TOMEE.ApplicationChannel;

+    var appSocket = null;

+    var reconnectTask = TOMEE.DelayedTask();

+    var reconnectDelay = 5000;

+    var urlBase = window.document.URL;

+

+    urlBase = urlBase.replace(new RegExp('^' + window.location.protocol + '//'), '');

+    urlBase = urlBase.replace(new RegExp('^' + window.document.location.host), '');

+    urlBase = urlBase.replace('#', '');

 

     channel.bind('server-callback', 'socket-connection-message-received', function (data) {

         var bean = $.parseJSON(data);

@@ -66,16 +71,16 @@
     }

 

     function createSocket() {

-        var isFake = false,

-            socket = null,

-            host = (function () {

-                var suffix = '/tomee/socket';

-                var path = window.document.location.host + suffix;

-                if (window.location.protocol == 'http:') {

-                    return 'ws://' + path;

-                }

-                return 'wss://' + path;

-            })();

+        var isFake = false;

+        var socket = null;

+        var host = (function () {

+            var suffix = urlBase + 'socket';

+            var path = window.document.location.host + suffix;

+            if (window.location.protocol == 'http:') {

+                return 'ws://' + path;

+            }

+            return 'wss://' + path;

+        })();

 

         if ('WebSocket' in window) {

             socket = new WebSocket(host);

@@ -91,7 +96,7 @@
 

                 function send(str) {

                     $.ajax({

-                            url:'/tomee/command',

+                            url:urlBase + 'command',

                             type:'POST',

                             dataType:'text',

                             data:{

@@ -175,7 +180,7 @@
 

     function sendRequest(bean) {

         $.ajax({

-                url:'/tomee/' + bean.servlet,

+                url:urlBase + bean.servlet,

                 method:'POST',

                 dataType:'json',

                 data:bean.params,

diff --git a/tomee/tomee-webapp/src/main/webapp/app/js/ApplicationTemplates.js b/tomee/tomee-webapp/src/main/webapp/app/js/ApplicationTemplates.js
index 09f7bf5..df8e69a 100644
--- a/tomee/tomee-webapp/src/main/webapp/app/js/ApplicationTemplates.js
+++ b/tomee/tomee-webapp/src/main/webapp/app/js/ApplicationTemplates.js
@@ -45,6 +45,8 @@
     };

 })([

     'application',

+    'application-growl',

+    'application-growl-message',

     'application-disabled',

     'application-toolbar',

     'application-toolbar-logout-btn',

@@ -55,6 +57,8 @@
     'application-tab-log',

     'application-tab-log-file',

     'application-tab-log-lines',

+    'application-tab-status',

+    'application-tab-status-lines',

     'application-disconnected-popup',

     'application-tab-webservices',

     'application-tab-webservices-table',

diff --git a/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-growl-message.handlebars b/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-growl-message.handlebars
new file mode 100644
index 0000000..016cf96
--- /dev/null
+++ b/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-growl-message.handlebars
@@ -0,0 +1,4 @@
+<div id="{{alertId}}" class="growl alert alert-block {{messageType}}">
+    <button type="button" class="close" data-dismiss="alert">×</button>
+    <div class="message"></div>
+</div>
\ No newline at end of file
diff --git a/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-growl.handlebars b/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-growl.handlebars
new file mode 100644
index 0000000..8537cf6
--- /dev/null
+++ b/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-growl.handlebars
@@ -0,0 +1 @@
+<div class="growl-container"></div>
\ No newline at end of file
diff --git a/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-tab-console-sample.handlebars b/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-tab-console-sample.handlebars
index d3865a5..081dd21 100644
--- a/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-tab-console-sample.handlebars
+++ b/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-tab-console-sample.handlebars
@@ -7,9 +7,9 @@
 with (myImports) {
   var p = new Properties();
   p.put("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory");
-  p.put("java.naming.provider.url", "http://localhost:8080/tomee/ejb");
-  p.put("java.naming.security.principal", "tomee");
-  p.put("java.naming.security.credentials", "tomee");
+  p.put("java.naming.provider.url", "{{protocol}}://localhost:{{port}}/tomee/ejb");
+  p.put("java.naming.security.principal", "{{name}}");
+  p.put("java.naming.security.credentials", "{{password}}");
 
   var ctx = new InitialContext(p);
   var myBean =  ctx.lookup("openejb/UserBusinessRemote");
diff --git a/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-tab-status-lines.handlebars b/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-tab-status-lines.handlebars
new file mode 100644
index 0000000..ed349ab
--- /dev/null
+++ b/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-tab-status-lines.handlebars
@@ -0,0 +1,10 @@
+<form class="form-horizontal status-lines">
+    {{#properties}}
+    <div class="control-group">
+        <label class="control-label" for="{{uniqueId}}-{{this.key}}">{{this.key}}</label>
+        <div class="controls">
+            <input type="text" id="{{uniqueId}}-{{this.key}}" class="path" param-key="{{this.key}}" value="{{this.value}}">
+        </div>
+    </div>
+    {{/properties}}
+</form>
diff --git a/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-tab-status.handlebars b/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-tab-status.handlebars
new file mode 100644
index 0000000..a435122
--- /dev/null
+++ b/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-tab-status.handlebars
@@ -0,0 +1,12 @@
+<div class="tomee-status">
+    <div class="tomee-status-output"></div>
+    <div class="navbar navbar-inverse bbar">
+        <div class="navbar-inner">
+            <div class="buttons">
+                <button class="btn btn-primary install" disabled>
+                    <span>{{i18n "application.status.install"}}</span>
+                </button>
+            </div>
+        </div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-toolbar.handlebars b/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-toolbar.handlebars
index d928b67..f28ca37 100644
--- a/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-toolbar.handlebars
+++ b/tomee/tomee-webapp/src/main/webapp/app/js/templates/application-toolbar.handlebars
@@ -4,8 +4,9 @@
             <a class="brand" href="#">{{i18n "application.name"}}</a>
             <ul class="nav">
                 <li class="toolbar-item active" tab-key="home"><a href="#">{{i18n "application.home"}}</a></li>
-                <li class="toolbar-item" tab-key="console"><a href="#">{{i18n "application.console"}}</a></li>
-                <li class="toolbar-item" tab-key="log"><a href="#">{{i18n "application.log"}}</a></li>
+                <li class="toolbar-item hidden" tab-key="console"><a href="#">{{i18n "application.console"}}</a></li>
+                <li class="toolbar-item hidden" tab-key="log"><a href="#">{{i18n "application.log"}}</a></li>
+                <li class="toolbar-item hidden" tab-key="status"><a href="#">{{i18n "application.status"}}</a></li>
             </ul>
             <div class="pull-right">
                 <ul class="nav">
diff --git a/tomee/tomee-webapp/src/main/webapp/app/js/util/I18N.js b/tomee/tomee-webapp/src/main/webapp/app/js/util/I18N.js
index b71f44a..4215014 100644
--- a/tomee/tomee-webapp/src/main/webapp/app/js/util/I18N.js
+++ b/tomee/tomee-webapp/src/main/webapp/app/js/util/I18N.js
@@ -19,6 +19,7 @@
 

 TOMEE.I18N = (function () {

 

+    var missing = Handlebars.compile('[!{{key}}!]');

     var messages = {

         'application.name':'Apache TomEE',

 

@@ -29,13 +30,21 @@
 

         'application.home':'Home',

 

+        'application.status':'Status',

+        'application.status.install':'install',

+        'application.status.reinstall':'re-install',

+        'application.status.isAgentInstalled':'Is the agent installed? {{message}}',

+        'application.status.isListenerInstalled':'Is the listener installed? {{message}}',

+

         'application.jndi':'JNDI',

         'application.jndi.path':'Path',

 

         'application.console':'Console',

         'application.console.run':'Execute',

+        'application.console.run.error':'Script error.',

         'application.console.clear.output':'Clear output',

         'application.console.done':'Script executed.',

+        'application.console.password':'[Your password goes here]',

         'application.console.run.time':'Time',

         'application.console.run.output.empty':'Empty',

 

@@ -51,18 +60,30 @@
         'application.sign.in':'Sign In',

         'application.sign.out':'Sign Out',

         'application.log.in':'Login',

+        'application.log.error':'Login error. Please try again.',

+        'application.log.bad':'Bad user or password. Please try again.',

+        'application.log.hello':'Hello {{userName}}!',

         'application.password':'Password',

 

         'dummy':'dummy'

     };

 

-    var get = function (key) {

-        var result = messages[key];

-        if (!result) {

-            result = '[!' + key + '!]';

+    TOMEE.utils.forEachKey(messages, function (key, value) {

+        var template = Handlebars.compile(value);

+        messages[key] = template;

+    });

+

+    var get = function (key, values) {

+        var template = messages[key];

+        var cfg = values;

+        if (!template) {

+            template = missing;

+            cfg = {

+                key:key

+            };

             console.error('Missing i18n message.', key);

         }

-        return result;

+        return template(cfg);

     };

 

     Handlebars.registerHelper('i18n', function (key) {

diff --git a/tomee/tomee-webapp/src/main/webapp/app/js/util/Log.js b/tomee/tomee-webapp/src/main/webapp/app/js/util/Log.js
index c58b017..431cf49 100644
--- a/tomee/tomee-webapp/src/main/webapp/app/js/util/Log.js
+++ b/tomee/tomee-webapp/src/main/webapp/app/js/util/Log.js
@@ -14,50 +14,22 @@
  *  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.

- "use strict";

  */

 

+"use strict";

+

 (function () {

-    var winConsole = window.console,

+    var noOp = function() {};

 

-        // These are the available methods. Add more to this list if necessary.

-        consoleEmpty = {

-            error:function () {},

-            log:function () {}

-        },

+    if(!window.console) {

+        window.console = {};

+    }

 

-        consoleProxy = (function () {

-            // This object wraps the "window.console"

-            var consoleWrapper = {};

+    if(!window.console.error) {

+        window.console.error = noOp;

+    }

 

-            function buildMethodProxy(key) {

-                if (winConsole[key] && typeof winConsole[key] === 'function') {

-                    consoleWrapper[key] = function () {

-                        var cFunc = winConsole[key];

-                        cFunc.call(winConsole, arguments);

-                    };

-                } else {

-                    consoleWrapper[key] = function () {

-                        consoleEmpty[key]();

-                    };

-                }

-            }

-

-            // Checking if the browser has the "console" object

-            if (winConsole) {

-                // Only the methods defined by the consoleMock

-                // are available for use.

-                for (var key in consoleEmpty) {

-                    if (consoleEmpty.hasOwnProperty(key)) {

-                        buildMethodProxy(key);

-                    }

-                }

-            } else {

-                consoleWrapper = consoleEmpty;

-            }

-

-            return consoleWrapper;

-        })();

-

-    window.console = consoleProxy;

+    if(!window.console.log) {

+        window.console.log = noOp;

+    }

 })();
\ No newline at end of file
diff --git a/tomee/tomee-webapp/src/main/webapp/app/js/util/Obj.js b/tomee/tomee-webapp/src/main/webapp/app/js/util/Obj.js
index b85ecaa..f45ce04 100644
--- a/tomee/tomee-webapp/src/main/webapp/app/js/util/Obj.js
+++ b/tomee/tomee-webapp/src/main/webapp/app/js/util/Obj.js
@@ -134,6 +134,17 @@
         }

     }

 

+    function forEachKey(obj, callback) {

+        if(!obj) {

+            return;

+        }

+        for (var key in obj) {

+            if (obj.hasOwnProperty(key)) {

+                callback(key, obj[key]);

+            }

+        }

+    }

+

     return {

         keyCodeToString: keyCodeToString,

         isPrimitive:isPrimitive,

@@ -142,6 +153,7 @@
         getArray:getArray,

         getObject:getObject,

         stringFormat:stringFormat,

-        forEach:forEach

+        forEach:forEach,

+        forEachKey:forEachKey

     }

 })();
\ No newline at end of file
diff --git a/tomee/tomee-webapp/src/main/webapp/app/js/view/ApplicationToolbarView.js b/tomee/tomee-webapp/src/main/webapp/app/js/view/ApplicationToolbarView.js
index 4f04546..a23cac4 100644
--- a/tomee/tomee-webapp/src/main/webapp/app/js/view/ApplicationToolbarView.js
+++ b/tomee/tomee-webapp/src/main/webapp/app/js/view/ApplicationToolbarView.js
@@ -19,9 +19,13 @@
 TOMEE.ApplicationToolbarView = function () {

     "use strict";

 

-    var channel = TOMEE.ApplicationChannel,

-        el = $(TOMEE.ApplicationTemplates.getValue('application-toolbar', {})),

-        logoutBtn = $(TOMEE.ApplicationTemplates.getValue('application-toolbar-logout-btn', {}));

+    var channel = TOMEE.ApplicationChannel;

+    var el = $(TOMEE.ApplicationTemplates.getValue('application-toolbar', {}));

+

+    var userNameMenu = el.find('.tomee-user-name');

+    var loginMenu = el.find('.user-login-dropdown');

+    var loginBtn = el.find('.tomee-login-btn');

+    var logoutBtn = $(TOMEE.ApplicationTemplates.getValue('application-toolbar-logout-btn', {}));

 

     el.find('.toolbar-item').on('click', function (ev) {

         var tabEl = $(ev.currentTarget),

@@ -32,6 +36,29 @@
         });

     });

 

+    userNameMenu.on('click', function() {

+        TOMEE.DelayedTask().delay(function() {

+            var user = el.find('.tomee-login');

+

+            if(loginMenu.hasClass('open') && user) {

+                user.focus();

+            }

+        }, 500);

+    });

+

+    channel.bind('ui-actions', 'locked-change', function (data) {

+        el.find('.toolbar-item').each(function (index, htmlElement) {

+            var element = $(htmlElement);

+            if (data.panel === element.attr('tab-key')) {

+                if (data.locked) {

+                    element.addClass('hidden');

+                } else {

+                    element.removeClass('hidden');

+                }

+            }

+        });

+    });

+

     channel.bind('ui-actions', 'panel-switch', function (data) {

         el.find('.toolbar-item').removeClass('active');

         el.find('.toolbar-item').each(function (index, htmlEl) {

@@ -44,16 +71,15 @@
         });

     });

 

-    el.find('.tomee-login-btn').on('click', function () {

-        var user = el.find('.tomee-login').val(),

-            pass = el.find('.tomee-password').val(),

-            btn = el.find('.tomee-login-btn');

+    loginBtn.on('click', function () {

+        var user = el.find('.tomee-login').val();

+        var pass = el.find('.tomee-password').val();

 

         channel.send('ui-actions', 'login-btn-click', {

             user:user,

             pass:pass

         });

-        btn.prop('disabled', true);

+        loginBtn.prop('disabled', true);

     });

 

     logoutBtn.on('click', function () {

@@ -61,43 +87,37 @@
     });

 

     channel.bind('server-command-callback-success', 'Login', function (params) {

-        var btn = el.find('.tomee-login-btn'),

-            btnsArea = el.find('.login-buttons'),

-            menu = el.find('.user-login-dropdown'),

-            userNameMenu = el.find('.tomee-user-name'),

-            user = el.find('.tomee-login'),

-            pass = el.find('.tomee-password');

+        var btnsArea = el.find('.login-buttons');

+        var user = el.find('.tomee-login');

+        var pass = el.find('.tomee-password');

 

         if (!params.output.loginSuccess) {

-            btn.prop('disabled', false);

+            loginBtn.prop('disabled', false);

             return;

         }

 

-        btn.remove();

+        loginBtn.remove();

         user.remove();

         pass.remove();

 

         btnsArea.append(logoutBtn);

 

-        menu.removeClass('open');

+        loginMenu.removeClass('open');

         userNameMenu.html(user.val());

 

         el.find('.login-menu').addClass('logout');

     });

 

     channel.bind('server-command-callback-success', 'session', function (params) {

-        var btn = el.find('.tomee-login-btn'),

-            btnsArea = el.find('.login-buttons'),

-            menu = el.find('.user-login-dropdown'),

-            userNameMenu = el.find('.tomee-user-name'),

-            user = el.find('.tomee-login'),

-            pass = el.find('.tomee-password');

+        var btnsArea = el.find('.login-buttons');

+        var user = el.find('.tomee-login');

+        var pass = el.find('.tomee-password');

 

         if (!params.data.userName) {

             return;

         }

 

-        btn.remove();

+        loginBtn.remove();

         user.remove();

         pass.remove();

         btnsArea.append(logoutBtn);

@@ -109,8 +129,7 @@
     });

 

     channel.bind('server-command-callback-error', 'Login', function (params) {

-        var btn = el.find('.tomee-login-btn');

-        btn.prop('disabled', false);

+        loginBtn.prop('disabled', false);

     });

 

     return {

diff --git a/tomee/tomee-webapp/src/main/webapp/app/js/view/ApplicationView.js b/tomee/tomee-webapp/src/main/webapp/app/js/view/ApplicationView.js
index 7c94bdd..6d6e426 100644
--- a/tomee/tomee-webapp/src/main/webapp/app/js/view/ApplicationView.js
+++ b/tomee/tomee-webapp/src/main/webapp/app/js/view/ApplicationView.js
@@ -23,7 +23,8 @@
         panelMap = {

             'home':TOMEE.ApplicationTabHome(),

             'console':TOMEE.ApplicationTabConsole(),

-            'log':TOMEE.ApplicationTabLog()

+            'log':TOMEE.ApplicationTabLog(),

+            'status': TOMEE.ApplicationTabStatus()

         },

         selected = null,

         container = $(TOMEE.ApplicationTemplates.getValue('application', {})),

diff --git a/tomee/tomee-webapp/src/main/webapp/app/js/view/GrowlNotification.js b/tomee/tomee-webapp/src/main/webapp/app/js/view/GrowlNotification.js
new file mode 100644
index 0000000..5545f3b
--- /dev/null
+++ b/tomee/tomee-webapp/src/main/webapp/app/js/view/GrowlNotification.js
@@ -0,0 +1,61 @@
+/**

+ *

+ * 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.

+ */

+

+TOMEE.GrowlNotification = function () {

+    "use strict";

+

+    var channel = TOMEE.ApplicationChannel;

+    var container = $(TOMEE.ApplicationTemplates.getValue('application-growl', {}));

+    var myBody = $('body');

+    var active = false;

+    var timeout = {};

+

+    function showNotification(message, messageType) {

+        if (!active) {

+            active = true;

+            myBody.append(container);

+        }

+        var alertId = TOMEE.Sequence.next('alert');

+        var alert = $(TOMEE.ApplicationTemplates.getValue('application-growl-message', {

+            alertId:alertId,

+            messageType:'alert-' + messageType

+        }));

+        var messageEl = alert.find('.message');

+        messageEl.append(message);

+        container.append(alert);

+        alert.fadeIn();

+

+        timeout[alertId] = TOMEE.DelayedTask();

+        timeout[alertId].delay(function() {

+            try {

+                alert.fadeOut(null, function () {

+                    try {

+                        alert.remove();

+                    } catch (e) { /* noop */ }

+                });

+            } catch (e) { /* noop */ }

+            delete timeout[alertId];

+        }, 5000);

+

+

+    }

+

+    return {

+        showNotification:showNotification

+    };

+};
\ No newline at end of file
diff --git a/tomee/tomee-webapp/src/main/webapp/app/js/view/panels/console.js b/tomee/tomee-webapp/src/main/webapp/app/js/view/panels/console.js
index a813a85..df98bd6 100644
--- a/tomee/tomee-webapp/src/main/webapp/app/js/view/panels/console.js
+++ b/tomee/tomee-webapp/src/main/webapp/app/js/view/panels/console.js
@@ -19,30 +19,46 @@
 TOMEE.ApplicationTabConsole = function () {
     "use strict";
 
-    var channel = TOMEE.ApplicationChannel,
-        container = $(TOMEE.ApplicationTemplates.getValue('application-tab-console', {})),
-        innerPanels = {
-            webservices:TOMEE.ApplicationTabWebservices(),
-            jndi:TOMEE.ApplicationTabJndi()
-        },
+    var channel = TOMEE.ApplicationChannel;
+    var container = $(TOMEE.ApplicationTemplates.getValue('application-tab-console', {}));
+    var innerPanels = {
+        webservices:TOMEE.ApplicationTabWebservices(),
+        jndi:TOMEE.ApplicationTabJndi()
+    };
 
-        codeArea = null,
-        active = false,
-        locked = true,
-        delayedContainerResize = TOMEE.DelayedTask();
+    var codeArea = null;
+    var active = false;
+    var locked = true;
+    var delayedContainerResize = TOMEE.DelayedTask();
+    var userName = null;
+
+    channel.bind('server-command-callback-success', 'Login', function (params) {
+        userName = params.params.user;
+    });
+    channel.bind('server-command-callback-success', 'session', function (params) {
+        userName = params.data.userName;
+    });
+
+    function setLocked(value) {
+        locked = value;
+        channel.send('ui-actions', 'locked-change', {
+            locked: value,
+            panel:'console'
+        });
+    }
 
     container.find('.webservices-div').append(innerPanels.webservices.getEl());
     container.find('.jndi-div').append(innerPanels.jndi.getEl());
 
     container.find('.dropdown-toggle').on('click', function (ev) {
-        var button = $(ev.currentTarget),
-            customAttr = 'tab-name',
-            group = button.parent('.btn-group'),
-            tab = group.attr(customAttr);
+        var button = $(ev.currentTarget);
+        var customAttr = 'tab-name';
+        var group = button.parent('.btn-group');
+        var tab = group.attr(customAttr);
 
         container.find('.btn-group').each(function (index, grpHtmlEl) {
-            var grpEl = $(grpHtmlEl),
-                grpTabName = grpEl.attr(customAttr);
+            var grpEl = $(grpHtmlEl);
+            var grpTabName = grpEl.attr(customAttr);
             if (tab === grpTabName) {
                 return;
             }
@@ -110,17 +126,17 @@
 
     channel.bind('server-command-callback-success', 'Login', function (params) {
         if (params.output.loginSuccess) {
-            locked = false;
+            setLocked(false);
         } else {
-            locked = true;
+            setLocked(true);
         }
     });
 
     channel.bind('server-command-callback-success', 'session', function (params) {
         if (params.data.userName) {
-            locked = false;
+            setLocked(false);
         } else {
-            locked = true;
+            setLocked(true);
         }
     });
 
@@ -155,7 +171,16 @@
             if (!codeArea) {
                 codeArea = CodeMirror(container.children('.tomee-code').get(0), {
                     lineNumbers:true,
-                    value:TOMEE.ApplicationTemplates.getValue('application-tab-console-sample', {})
+                    value:TOMEE.ApplicationTemplates.getValue('application-tab-console-sample', {
+                        port:window.location.port,
+                        protocol: (function() {
+                            var protocol = window.location.protocol;
+                            protocol = protocol.replace(':', '');
+                            return protocol;
+                        })(),
+                        name: userName,
+                        password:TOMEE.I18N.get('application.console.password')
+                    })
                 });
             }
             codeArea.focus();
diff --git a/tomee/tomee-webapp/src/main/webapp/app/js/view/panels/jndi.js b/tomee/tomee-webapp/src/main/webapp/app/js/view/panels/jndi.js
index 342842c..a522772 100644
--- a/tomee/tomee-webapp/src/main/webapp/app/js/view/panels/jndi.js
+++ b/tomee/tomee-webapp/src/main/webapp/app/js/view/panels/jndi.js
@@ -19,9 +19,9 @@
 TOMEE.ApplicationTabJndi = function () {
     "use strict";
 
-    var channel = TOMEE.ApplicationChannel,
-        container = $(TOMEE.ApplicationTemplates.getValue('application-tab-jndi', {})),
-        active = false;
+    var channel = TOMEE.ApplicationChannel;
+    var container = $(TOMEE.ApplicationTemplates.getValue('application-tab-jndi', {}));
+    var active = false;
 
     channel.bind('ui-actions', 'window-F5-pressed', function () {
         triggerRefresh();
diff --git a/tomee/tomee-webapp/src/main/webapp/app/js/view/panels/log.js b/tomee/tomee-webapp/src/main/webapp/app/js/view/panels/log.js
index c3b2611..b476205 100644
--- a/tomee/tomee-webapp/src/main/webapp/app/js/view/panels/log.js
+++ b/tomee/tomee-webapp/src/main/webapp/app/js/view/panels/log.js
@@ -19,11 +19,19 @@
 TOMEE.ApplicationTabLog = function () {
     "use strict";
 
-    var channel = TOMEE.ApplicationChannel,
-        container = $(TOMEE.ApplicationTemplates.getValue('application-tab-log', {})),
-        selectedFile = null,
-        active = false,
-        locked = true;
+    var channel = TOMEE.ApplicationChannel;
+    var container = $(TOMEE.ApplicationTemplates.getValue('application-tab-log', {}));
+    var selectedFile = null;
+    var active = false;
+    var locked = true;
+
+    function setLocked(value) {
+        locked = value;
+        channel.send('ui-actions', 'locked-change', {
+            locked: value,
+            panel:'log'
+        });
+    }
 
     channel.bind('ui-actions', 'container-resized', function (data) {
         var consoleOutput = container.find('.tomee-log-output'),
@@ -77,17 +85,17 @@
 
     channel.bind('server-command-callback-success', 'Login', function (params) {
         if (params.output.loginSuccess) {
-            locked = false;
+            setLocked(false);
         } else {
-            locked = true;
+            setLocked(true);
         }
     });
 
     channel.bind('server-command-callback-success', 'session', function (params) {
         if (params.data.userName) {
-            locked = false;
+            setLocked(false);
         } else {
-            locked = true;
+            setLocked(true);
         }
     });
 
diff --git a/tomee/tomee-webapp/src/main/webapp/app/js/view/panels/status.js b/tomee/tomee-webapp/src/main/webapp/app/js/view/panels/status.js
new file mode 100644
index 0000000..5cbd0a9
--- /dev/null
+++ b/tomee/tomee-webapp/src/main/webapp/app/js/view/panels/status.js
@@ -0,0 +1,148 @@
+/**
+ *
+ * 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.
+ */
+
+TOMEE.ApplicationTabStatus = function () {
+    "use strict";
+
+    var channel = TOMEE.ApplicationChannel;
+    var container = $(TOMEE.ApplicationTemplates.getValue('application-tab-status', {}));
+    var active = false;
+    var locked = true;
+    var loaded = false;
+
+    function setLocked(value) {
+        locked = value;
+        channel.send('ui-actions', 'locked-change', {
+            locked:value,
+            panel:'status'
+        });
+    }
+
+    function getPaths() {
+        var result = {};
+        container.find('.path').each(function (index, el) {
+            var field = $(el);
+            result[field.attr('param-key')] = field.val();
+        });
+        return result;
+    }
+
+    container.find('.buttons').on('click', function () {
+        channel.send('ui-actions', 'openejb-installer-clicked', getPaths());
+    });
+
+    channel.bind('ui-actions', 'container-resized', function (data) {
+        var consoleOutput = container.find('.tomee-status-output');
+        var bbar = container.find('.bbar');
+        var outputHeight = data.containerHeight - bbar.height() - 3;
+
+        consoleOutput.height(outputHeight);
+    });
+
+    channel.bind('server-command-callback-success', 'Login', function (params) {
+        if (params.output.loginSuccess) {
+            setLocked(false);
+        } else {
+            setLocked(true);
+        }
+    });
+
+    channel.bind('server-command-callback-success', 'session', function (params) {
+        if (params.data.userName) {
+            setLocked(false);
+        } else {
+            setLocked(true);
+        }
+    });
+
+    function showAlert(outMessages, messageType) {
+        var messages = TOMEE.utils.getArray(outMessages);
+        if (messages.length < 1) {
+            return;
+        }
+        channel.send('ui-actions', 'show-notification', {
+            message:messages.join('<BR>'),
+            messageType:'alert-' + messageType
+        });
+    }
+
+    channel.bind('server-command-callback-success', 'RunInstaller', function (params) {
+        showAlert(params.output.infos, 'success');
+        showAlert(params.output.warnings, 'warning');
+        showAlert(params.output.errors, 'error');
+    });
+
+    channel.bind('server-command-callback-success', 'GetStatus', function (data) {
+        var output = container.find('.tomee-status-output');
+        var buttons = container.find('.buttons');
+
+        var properties = [];
+
+        TOMEE.utils.forEachKey(data.output.mainPaths, function (key, value) {
+            properties.push({
+                key:key,
+                value:value
+            });
+        });
+
+        output.empty();
+        output.append($(TOMEE.ApplicationTemplates.getValue('application-tab-status-lines', {
+            uniqueId:TOMEE.Sequence.next('path'),
+            properties:properties
+        })));
+
+        buttons.find('.install').each(function (index, element) {
+            var btn = $(element);
+            if (data.output.isAgentInstalled || data.output.isAgentInstalled) {
+                btn.prop('disabled', true);
+            } else {
+                btn.prop('disabled', false);
+            }
+        });
+
+        showAlert([
+            TOMEE.I18N.get('application.status.isAgentInstalled', {
+                message:data.output.isAgentInstalled + ''
+
+            }),
+            TOMEE.I18N.get('application.status.isListenerInstalled', {
+                message:data.output.isListenerInstalled + ''
+            })
+        ], 'success');
+
+        loaded = true;
+    });
+
+    return {
+        getEl:function () {
+            return container;
+        },
+        onAppend:function () {
+            active = true;
+            if (!loaded) {
+                channel.send('ui-actions', 'load-status', {});
+            }
+        },
+        onDetach:function () {
+            active = false;
+        },
+        isLocked:function () {
+            return locked;
+        }
+    };
+};
\ No newline at end of file
diff --git a/tomee/tomee-webapp/src/main/webapp/app/js/view/panels/webservices.js b/tomee/tomee-webapp/src/main/webapp/app/js/view/panels/webservices.js
index bca25f8..e1e8947 100644
--- a/tomee/tomee-webapp/src/main/webapp/app/js/view/panels/webservices.js
+++ b/tomee/tomee-webapp/src/main/webapp/app/js/view/panels/webservices.js
@@ -19,9 +19,9 @@
 TOMEE.ApplicationTabWebservices = function () {
     "use strict";
 
-    var channel = TOMEE.ApplicationChannel,
-        container = $(TOMEE.ApplicationTemplates.getValue('application-tab-webservices', {})),
-        active = false;
+    var channel = TOMEE.ApplicationChannel;
+    var container = $(TOMEE.ApplicationTemplates.getValue('application-tab-webservices', {}));
+    var active = false;
 
     channel.bind('ui-actions', 'window-F5-pressed', function () {
         triggerRefresh();
@@ -37,9 +37,9 @@
     });
 
     function buildTableData(data) {
-        var rest = TOMEE.utils.getArray(data.rest),
-            soap = TOMEE.utils.getArray(data.soap),
-            result = [];
+        var rest = TOMEE.utils.getArray(data.rest);
+        var soap = TOMEE.utils.getArray(data.soap);
+        var result = [];
 
         function buildAppData(app, wsType) {
             var services = TOMEE.utils.getArray(app.services);
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/bootstrap/2.1.1/css/bootstrap-responsive.css b/tomee/tomee-webapp/src/main/webapp/app/lib/bootstrap/2.1.1/css/bootstrap-responsive.css
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/bootstrap/2.1.1/css/bootstrap-responsive.css
rename to tomee/tomee-webapp/src/main/webapp/app/lib/bootstrap/2.1.1/css/bootstrap-responsive.css
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/bootstrap/2.1.1/css/bootstrap-responsive.min.css b/tomee/tomee-webapp/src/main/webapp/app/lib/bootstrap/2.1.1/css/bootstrap-responsive.min.css
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/bootstrap/2.1.1/css/bootstrap-responsive.min.css
rename to tomee/tomee-webapp/src/main/webapp/app/lib/bootstrap/2.1.1/css/bootstrap-responsive.min.css
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/bootstrap/2.1.1/css/bootstrap.css b/tomee/tomee-webapp/src/main/webapp/app/lib/bootstrap/2.1.1/css/bootstrap.css
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/bootstrap/2.1.1/css/bootstrap.css
rename to tomee/tomee-webapp/src/main/webapp/app/lib/bootstrap/2.1.1/css/bootstrap.css
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/bootstrap/2.1.1/css/bootstrap.min.css b/tomee/tomee-webapp/src/main/webapp/app/lib/bootstrap/2.1.1/css/bootstrap.min.css
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/bootstrap/2.1.1/css/bootstrap.min.css
rename to tomee/tomee-webapp/src/main/webapp/app/lib/bootstrap/2.1.1/css/bootstrap.min.css
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/bootstrap/2.1.1/img/glyphicons-halflings-white.png b/tomee/tomee-webapp/src/main/webapp/app/lib/bootstrap/2.1.1/img/glyphicons-halflings-white.png
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/bootstrap/2.1.1/img/glyphicons-halflings-white.png
rename to tomee/tomee-webapp/src/main/webapp/app/lib/bootstrap/2.1.1/img/glyphicons-halflings-white.png
Binary files differ
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/bootstrap/2.1.1/img/glyphicons-halflings.png b/tomee/tomee-webapp/src/main/webapp/app/lib/bootstrap/2.1.1/img/glyphicons-halflings.png
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/bootstrap/2.1.1/img/glyphicons-halflings.png
rename to tomee/tomee-webapp/src/main/webapp/app/lib/bootstrap/2.1.1/img/glyphicons-halflings.png
Binary files differ
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/bootstrap/2.1.1/js/bootstrap.js b/tomee/tomee-webapp/src/main/webapp/app/lib/bootstrap/2.1.1/js/bootstrap.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/bootstrap/2.1.1/js/bootstrap.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/bootstrap/2.1.1/js/bootstrap.js
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/bootstrap/2.1.1/js/bootstrap.min.js b/tomee/tomee-webapp/src/main/webapp/app/lib/bootstrap/2.1.1/js/bootstrap.min.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/bootstrap/2.1.1/js/bootstrap.min.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/bootstrap/2.1.1/js/bootstrap.min.js
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/LICENSE b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/LICENSE
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/LICENSE
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/LICENSE
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/codemirror.css b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/codemirror.css
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/codemirror.css
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/codemirror.css
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/codemirror.js b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/codemirror.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/codemirror.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/codemirror.js
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/closetag.js b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/closetag.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/closetag.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/closetag.js
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/dialog.css b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/dialog.css
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/dialog.css
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/dialog.css
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/dialog.js b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/dialog.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/dialog.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/dialog.js
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/foldcode.js b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/foldcode.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/foldcode.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/foldcode.js
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/formatting.js b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/formatting.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/formatting.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/formatting.js
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/javascript-hint.js b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/javascript-hint.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/javascript-hint.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/javascript-hint.js
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/loadmode.js b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/loadmode.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/loadmode.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/loadmode.js
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/match-highlighter.js b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/match-highlighter.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/match-highlighter.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/match-highlighter.js
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/multiplex.js b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/multiplex.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/multiplex.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/multiplex.js
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/overlay.js b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/overlay.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/overlay.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/overlay.js
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/pig-hint.js b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/pig-hint.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/pig-hint.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/pig-hint.js
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/runmode-standalone.js b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/runmode-standalone.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/runmode-standalone.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/runmode-standalone.js
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/runmode.js b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/runmode.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/runmode.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/runmode.js
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/search.js b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/search.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/search.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/search.js
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/searchcursor.js b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/searchcursor.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/searchcursor.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/searchcursor.js
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/simple-hint.css b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/simple-hint.css
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/simple-hint.css
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/simple-hint.css
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/simple-hint.js b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/simple-hint.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/simple-hint.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/simple-hint.js
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/xml-hint.js b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/xml-hint.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/lib/util/xml-hint.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/lib/util/xml-hint.js
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/mode/groovy/groovy.js b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/mode/groovy/groovy.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/mode/groovy/groovy.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/mode/groovy/groovy.js
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/mode/groovy/index.html b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/mode/groovy/index.html
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/mode/groovy/index.html
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/mode/groovy/index.html
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/mode/javascript/index.html b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/mode/javascript/index.html
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/mode/javascript/index.html
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/mode/javascript/index.html
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/mode/javascript/javascript.js b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/mode/javascript/javascript.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/mode/javascript/javascript.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/mode/javascript/javascript.js
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/package.json b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/package.json
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/package.json
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/package.json
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/ambiance.css b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/ambiance.css
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/ambiance.css
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/ambiance.css
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/blackboard.css b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/blackboard.css
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/blackboard.css
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/blackboard.css
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/cobalt.css b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/cobalt.css
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/cobalt.css
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/cobalt.css
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/eclipse.css b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/eclipse.css
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/eclipse.css
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/eclipse.css
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/elegant.css b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/elegant.css
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/elegant.css
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/elegant.css
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/erlang-dark.css b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/erlang-dark.css
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/erlang-dark.css
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/erlang-dark.css
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/lesser-dark.css b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/lesser-dark.css
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/lesser-dark.css
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/lesser-dark.css
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/monokai.css b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/monokai.css
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/monokai.css
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/monokai.css
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/neat.css b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/neat.css
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/neat.css
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/neat.css
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/night.css b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/night.css
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/night.css
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/night.css
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/rubyblue.css b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/rubyblue.css
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/rubyblue.css
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/rubyblue.css
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/vibrant-ink.css b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/vibrant-ink.css
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/vibrant-ink.css
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/vibrant-ink.css
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/xq-dark.css b/tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/xq-dark.css
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/codemirror/codemirror-2.34/theme/xq-dark.css
rename to tomee/tomee-webapp/src/main/webapp/app/lib/codemirror/codemirror-2.34/theme/xq-dark.css
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/handlebars/handlebars-1.0.rc.1.js b/tomee/tomee-webapp/src/main/webapp/app/lib/handlebars/handlebars-1.0.rc.1.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/handlebars/handlebars-1.0.rc.1.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/handlebars/handlebars-1.0.rc.1.js
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/jquery/jquery-1.7.2.min.js b/tomee/tomee-webapp/src/main/webapp/app/lib/jquery/jquery-1.7.2.min.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/jquery/jquery-1.7.2.min.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/jquery/jquery-1.7.2.min.js
diff --git a/tomee/tomee-webapp/src/main/webapp/lib/less/less-1.3.0.min.js b/tomee/tomee-webapp/src/main/webapp/app/lib/less/less-1.3.0.min.js
similarity index 100%
rename from tomee/tomee-webapp/src/main/webapp/lib/less/less-1.3.0.min.js
rename to tomee/tomee-webapp/src/main/webapp/app/lib/less/less-1.3.0.min.js
diff --git a/tomee/tomee-webapp/src/main/webapp/app/tomee.less b/tomee/tomee-webapp/src/main/webapp/app/tomee.less
index d058768..4c8eba1 100644
--- a/tomee/tomee-webapp/src/main/webapp/app/tomee.less
+++ b/tomee/tomee-webapp/src/main/webapp/app/tomee.less
@@ -17,9 +17,25 @@
 
 body {
     overflow: hidden;
+
+    .growl-container {
+        position: absolute;
+        bottom: 40px;
+        left: 20px;
+        z-index: 5000;
+
+        .growl {
+            display: none;
+            width: 300px;
+        }
+    }
 }
 
 .tomee {
+    .hidden {
+        display: none;
+    }
+
     overflow: hidden;
 
     .splitter {
@@ -77,6 +93,10 @@
     }
 
     .tomee-console {
+        .dropdown-menu {
+            overflow: auto;
+        }
+
         .tomee-console-output {
             background-color: #F7F7F9;
             border: 1px solid #E1E1E8;
@@ -97,6 +117,10 @@
             border-bottom: 1px solid white;
         }
 
+        .navbar-inner {
+            position: relative;
+        }
+
         .tomee-execute-webservices-group {
             position: absolute;
             bottom: 5px;
@@ -148,8 +172,40 @@
         }
     }
 
+    .tomee-status {
+        .navbar-inner {
+            position: relative;
+
+            .buttons {
+                position: absolute;
+                right: 10px;
+                top: 0px;
+            }
+        }
+
+        .tomee-status-output {
+            overflow: auto;
+            margin-bottom: 0px;
+            padding-top: 5px;
+
+            input {
+                width: 500px;
+            }
+
+            .alert {
+                margin-bottom: 5px;
+                margin-left: 5px;
+                margin-right: 5px;
+            }
+
+            .messages {
+                list-style: none;
+                margin-left: 5px;
+            }
+        }
+    }
+
     .tomee-webservices {
         padding: 5px;
     }
-
 }
\ No newline at end of file
diff --git a/tomee/tomee-webapp/src/main/webapp/default.css b/tomee/tomee-webapp/src/main/webapp/default.css
deleted file mode 100644
index e6a2970..0000000
--- a/tomee/tomee-webapp/src/main/webapp/default.css
+++ /dev/null
@@ -1,27 +0,0 @@
-<!--
-
-    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.
-
--->
-
-<!-- $Rev: 597221 $ $Date: 2007-11-21 22:51:05 +0100 (Wed, 21 Nov 2007) $ -->
-
-.boxsizingBorder {
-    box-sizing: border-box;
-    -webkit-box-sizing:border-box;
-    -moz-box-sizing: border-box;
-    -ms-box-sizing: border-box;
-}
\ No newline at end of file
diff --git a/tomee/tomee-webapp/src/main/webapp/images/JavaCup.gif b/tomee/tomee-webapp/src/main/webapp/images/JavaCup.gif
deleted file mode 100644
index 8862eca..0000000
--- a/tomee/tomee-webapp/src/main/webapp/images/JavaCup.gif
+++ /dev/null
Binary files differ
diff --git a/tomee/tomee-webapp/src/main/webapp/images/TreeClosed.gif b/tomee/tomee-webapp/src/main/webapp/images/TreeClosed.gif
deleted file mode 100644
index 6d00bc2..0000000
--- a/tomee/tomee-webapp/src/main/webapp/images/TreeClosed.gif
+++ /dev/null
Binary files differ
diff --git a/tomee/tomee-webapp/src/main/webapp/images/TreeOpen.gif b/tomee/tomee-webapp/src/main/webapp/images/TreeOpen.gif
deleted file mode 100644
index def2e5e..0000000
--- a/tomee/tomee-webapp/src/main/webapp/images/TreeOpen.gif
+++ /dev/null
Binary files differ
diff --git a/tomee/tomee-webapp/src/main/webapp/images/dotTrans.gif b/tomee/tomee-webapp/src/main/webapp/images/dotTrans.gif
deleted file mode 100644
index 1d11fa9..0000000
--- a/tomee/tomee-webapp/src/main/webapp/images/dotTrans.gif
+++ /dev/null
Binary files differ
diff --git a/tomee/tomee-webapp/src/main/webapp/images/ejb.gif b/tomee/tomee-webapp/src/main/webapp/images/ejb.gif
deleted file mode 100644
index 99e7f49..0000000
--- a/tomee/tomee-webapp/src/main/webapp/images/ejb.gif
+++ /dev/null
Binary files differ
diff --git a/tomee/tomee-webapp/src/main/webapp/images/line_light.gif b/tomee/tomee-webapp/src/main/webapp/images/line_light.gif
deleted file mode 100644
index a988332..0000000
--- a/tomee/tomee-webapp/src/main/webapp/images/line_light.gif
+++ /dev/null
Binary files differ
diff --git a/tomee/tomee-webapp/src/main/webapp/images/line_sm.gif b/tomee/tomee-webapp/src/main/webapp/images/line_sm.gif
deleted file mode 100644
index ee67615..0000000
--- a/tomee/tomee-webapp/src/main/webapp/images/line_sm.gif
+++ /dev/null
Binary files differ
diff --git a/tomee/tomee-webapp/src/main/webapp/images/logo_ejb2.gif b/tomee/tomee-webapp/src/main/webapp/images/logo_ejb2.gif
deleted file mode 100644
index 458b171..0000000
--- a/tomee/tomee-webapp/src/main/webapp/images/logo_ejb2.gif
+++ /dev/null
Binary files differ
diff --git a/tomee/tomee-webapp/src/main/webapp/images/pepper.gif b/tomee/tomee-webapp/src/main/webapp/images/pepper.gif
deleted file mode 100644
index 0db2305..0000000
--- a/tomee/tomee-webapp/src/main/webapp/images/pepper.gif
+++ /dev/null
Binary files differ
diff --git a/tomee/tomee-webapp/src/main/webapp/index.html b/tomee/tomee-webapp/src/main/webapp/index.html
index 84666fe..554ced4 100644
--- a/tomee/tomee-webapp/src/main/webapp/index.html
+++ b/tomee/tomee-webapp/src/main/webapp/index.html
@@ -19,23 +19,23 @@
 <head>

     <meta charset="utf-8">

     <title>Apache Tomee</title>

-    <link href="lib/bootstrap/2.1.1/css/bootstrap.css" rel="stylesheet">

-    <link rel="stylesheet" href="lib/codemirror/codemirror-2.34/lib/codemirror.css">

+    <link href="app/lib/bootstrap/2.1.1/css/bootstrap.css" rel="stylesheet">

+    <link rel="stylesheet" href="app/lib/codemirror/codemirror-2.34/lib/codemirror.css">

     <link rel="stylesheet/less" type="text/css" href="app/tomee.less">

 

-    <script src="lib/less/less-1.3.0.min.js"></script>

-    <script src="lib/jquery/jquery-1.7.2.min.js"></script>

-    <script src="lib/bootstrap/2.1.1/js/bootstrap.min.js"></script>

-    <script src="lib/handlebars/handlebars-1.0.rc.1.js"></script>

-    <script src="lib/codemirror/codemirror-2.34/lib/codemirror.js"></script>

-    <script src="lib/codemirror/codemirror-2.34/mode/javascript/javascript.js"></script>

+    <script src="app/lib/less/less-1.3.0.min.js"></script>

+    <script src="app/lib/jquery/jquery-1.7.2.min.js"></script>

+    <script src="app/lib/bootstrap/2.1.1/js/bootstrap.min.js"></script>

+    <script src="app/lib/handlebars/handlebars-1.0.rc.1.js"></script>

+    <script src="app/lib/codemirror/codemirror-2.34/lib/codemirror.js"></script>

+    <script src="app/lib/codemirror/codemirror-2.34/mode/javascript/javascript.js"></script>

 

     <script src="app/js/Application.js"></script>

 

+    <script src="app/js/util/Obj.js"></script>

     <script src="app/js/util/DelayedTask.js"></script>

     <script src="app/js/util/I18N.js"></script>

     <script src="app/js/util/Log.js"></script>

-    <script src="app/js/util/Obj.js"></script>

     <script src="app/js/util/Sequence.js"></script>

 

     <script src="app/js/ApplicationTemplates.js"></script>

@@ -45,10 +45,12 @@
 

     <script src="app/js/view/ApplicationView.js"></script>

     <script src="app/js/view/ApplicationToolbarView.js"></script>

+    <script src="app/js/view/GrowlNotification.js"></script>

 

     <script src="app/js/view/panels/home.js"></script>

     <script src="app/js/view/panels/console.js"></script>

     <script src="app/js/view/panels/log.js"></script>

+    <script src="app/js/view/panels/status.js"></script>

     <script src="app/js/view/panels/webservices.js"></script>

     <script src="app/js/view/panels/jndi.js"></script>

 

diff --git a/tomee/tomee-webapp/src/main/webapp/index.jsp b/tomee/tomee-webapp/src/main/webapp/index.jsp
deleted file mode 100644
index 0a5a5f5..0000000
--- a/tomee/tomee-webapp/src/main/webapp/index.jsp
+++ /dev/null
@@ -1,122 +0,0 @@
-<% out.print("<!DOCTYPE html>"); %>
-<!--
-
-    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.
-
--->
-
-<!-- $Rev: 597221 $ $Date: 2007-11-21 22:51:05 +0100 (Wed, 21 Nov 2007) $ -->
-
-<%@ page import="org.apache.tomee.installer.Installer" %>
-
-<html>
-<head>
-    <meta charset="utf-8">
-    <title>TomEE</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="lib/bootstrap/2.1.1/css/bootstrap.css" rel="stylesheet">
-    <style type="text/css">
-        body {
-            padding-top: 60px;
-            padding-bottom: 40px;
-        }
-        .sidebar-nav {
-            padding: 9px 0;
-        }
-    </style>
-    <link href="lib/bootstrap/2.1.1/css/bootstrap-responsive.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
-    <![endif]-->
-</head>
-
-<body>
-
-    <div class="navbar navbar-inverse navbar-fixed-top">
-        <div class="navbar-inner">
-            <div class="container-fluid">
-                <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-                    <span class="icon-bar"></span>
-                    <span class="icon-bar"></span>
-                    <span class="icon-bar"></span>
-                </a>
-                <a class="brand" href="http://openejb.apache.org">TomEE</a>
-                <div class="nav-collapse">
-                    <ul class="nav">
-                        <li class="active"><a href="index.jsp">Index</a></li>
-                        <li><a href="viewjndi.jsp">JNDI</a></li>
-                        <li><a href="viewejb.jsp">EJB</a></li>
-                        <li><a href="viewclass.jsp">Class</a></li>
-                        <li><a href="invokeobj.jsp">Invoke</a></li>
-                    </ul>
-
-                </div><!--/.nav-collapse -->
-            </div>
-        </div>
-    </div>
-
-    <div class="container-fluid">
-        <div class="row-fluid">
-            <div class="span12">
-                <div class="hero-unit">
-                    <h1>Welcome to Apache TomEE</h1>
-                    <p>You can test your setup and play around with the tools provided below!</p>
-
-                    <div class="btn-group">
-                        <a class="btn btn-primary btn-large" href="testhome.jsp">Testing your setup &raquo;</a>
-
-                        <% if (!Installer.isListenerInstalled() && !Installer.isAgentInstalled()) { %>
-                        <a class="btn btn-primary btn-large" href="installer">[Optional] Install Listener and JavaAgent &raquo;</a>
-
-                        <% } else if (!Installer.isListenerInstalled()) { %>
-                        <a class="btn btn-primary btn-large" href="installer">[Optional] Install Listener &raquo;</a>
-
-                        <% } else if (!Installer.isAgentInstalled()) { %>
-                        <a class="btn btn-primary btn-large" href="installer">[Optional] JavaAgent &raquo;</a>
-
-                        <% } %>
-
-                        <a class="btn btn-primary btn-large" href="viewjndi.jsp">JNDI Browser &raquo;</a>
-                        <a class="btn btn-primary btn-large" href="viewclass.jsp">Class Viewer &raquo;</a>
-                        <a class="btn btn-primary btn-large" href="viewejb.jsp">EJB Viewer &raquo;</a>
-                        <a class="btn btn-primary btn-large" href="invokeobj.jsp">Object Invoker &raquo;</a>
-                    </div>
-                </div>
-            </div><!--/span-->
-        </div><!--/row-->
-
-        <hr>
-
-        <footer>
-            <p>Copyright &copy; 2012  The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
-        </footer>
-
-    </div><!--/.fluid-container-->
-
-    <!-- Le javascript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script src="lib/jquery/jquery-1.7.2.min.js"></script>
-    <script src="lib/bootstrap/2.1.1/js/bootstrap.js"></script>
-
-</body>
-</html>
diff --git a/tomee/tomee-webapp/src/main/webapp/installer-view.jsp b/tomee/tomee-webapp/src/main/webapp/installer-view.jsp
deleted file mode 100644
index ba2b553..0000000
--- a/tomee/tomee-webapp/src/main/webapp/installer-view.jsp
+++ /dev/null
@@ -1,236 +0,0 @@
-<!DOCTYPE html>
-<!--
-
-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.
-
--->
-
-<!-- $Rev: 597221 $ $Date: 2007-11-21 22:51:05 +0100 (Wed, 21 Nov 2007) $ -->
-
-<%@ page import="org.apache.tomee.installer.Installer" %>
-<%@ page import="java.io.File" %>
-<%@ page import="org.apache.tomee.installer.Paths" %>
-<%@ page import="java.util.List" %>
-<%@ page import="java.util.ArrayList" %>
-<%
-    Installer installer = (Installer) request.getAttribute("installer");
-    Paths paths = (Paths) request.getAttribute("paths");
-%>
-<html>
-
-<head>
-    <meta charset="utf-8">
-    <title>TomEE</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="lib/bootstrap/2.1.1/css/bootstrap.css" rel="stylesheet">
-    <style type="text/css">
-        body {
-            padding-top: 60px;
-            padding-bottom: 40px;
-        }
-
-        .sidebar-nav {
-            padding: 9px 0;
-        }
-    </style>
-    <link href="lib/bootstrap/2.1.1/css/bootstrap-responsive.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
-    <![endif]-->
-</head>
-
-<body>
-
-<div class="navbar navbar-inverse navbar-fixed-top">
-    <div class="navbar-inner">
-        <div class="container-fluid">
-            <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-            </a>
-            <a class="brand" href="http://openejb.apache.org">TomEE</a>
-
-            <div class="nav-collapse">
-                <ul class="nav">
-                    <li class="active"><a href="index.jsp">Index</a></li>
-                    <li><a href="viewjndi.jsp">JNDI</a></li>
-                    <li><a href="viewejb.jsp">EJB</a></li>
-                    <li><a href="viewclass.jsp">Class</a></li>
-                    <li><a href="invokeobj.jsp">Invoke</a></li>
-                </ul>
-
-            </div>
-            <!--/.nav-collapse -->
-        </div>
-    </div>
-</div>
-
-<div class="container-fluid">
-    <div class="row-fluid">
-        <div class="span12">
-
-            <%
-                if (installer != null) {
-                    if (installer.getStatus() == Installer.Status.REBOOT_REQUIRED) {
-            %>
-
-            <table class='table table-striped table-bordered table-condensed'>
-                <tbody>
-                <%
-                    for (String info : installer.getAlerts().getInfos()) {
-                %>
-                <tr>
-                    <td><%= info %>
-                    </td>
-                    <td><span style="color:green;"><b>DONE</b></span></td>
-                </tr>
-                <%
-                    }
-                %>
-                </tbody>
-            </table>
-            <br><br>
-
-            The installer has completed successfully. <br>
-            Please, <b>restart Tomcat</b> and reload this page to verify installation.
-            <%
-            } else {
-                List<String> errors = new ArrayList<String>(paths.getErrors());
-                errors.addAll(installer.getAlerts().getErrors());
-                if (!errors.isEmpty()) {
-            %> Installation Failed<br><br>
-            <table>
-                <%
-                    for (String error : errors) {
-                %>
-                <tr>
-                    <td><%= error %>
-                    </td>
-                    <td><span style="color:green;"><b>DONE</b></span></td>
-                </tr>
-                <%
-                    }
-                %>
-            </table>
-            <br><br>
-            <%
-            } else {
-            %>
-            <table class='table table-striped table-bordered table-condensed'>
-                <tbody>
-                <tr>
-                    <td><font size='2'>Tomcat Listener Installed</font></td>
-                    <% if (installer.isListenerInstalled()) { %>
-                    <td><font size='2' color='green'><b>YES</b></font></td>
-                    <% } else { %>
-                    <td><font size='2' color='red'><b>NO</b></font></td>
-                    <% } %>
-                </tr>
-                <tr>
-                    <td><font size='2'>JavaAgent Installed</font></td>
-                    <% if (installer.isAgentInstalled()) { %>
-                    <td><font size='2' color='green'><b>YES</b></font></td>
-                    <% } else { %>
-                    <td><font size='2' color='red'><b>NO</b></font></td>
-                    <% } %>
-                </tr>
-                </tbody>
-            </table>
-            <br><br>
-            <%
-                }
-            %>
-            <%
-                if (installer.getStatus() == Installer.Status.NONE) {
-                    if (errors.isEmpty()) {
-            %>
-            Please verify the file paths are correct and click the install button.
-            <%
-            } else {
-            %>
-            Try again?
-            <%
-                }
-            %>
-
-            <br><br>
-
-            <form action='installer' method='post'>
-                <table>
-                    <tbody>
-                    <tr>
-                        <td>Catalina Home:</td>
-                        <td><input type='text' size='200' style="width:300px" name='catalinaHome'
-                                   value='<%= safeGetAbsolutePath(paths.getCatalinaHomeDir()) %>'></td>
-                    </tr>
-                    <tr>
-                        <td>Catalina Base:</td>
-                        <td><input type='text' size='200' style="width:300px" name='catalinaBase'
-                                   value='<%= safeGetAbsolutePath(paths.getCatalinaBaseDir()) %>'></td>
-                    </tr>
-                    <tr>
-                        <td>Catalina server.xml:</td>
-                        <td><input type='text' size='200' style="width:300px" name='serverXml'
-                                   value='<%= safeGetAbsolutePath(paths.getServerXmlFile()) %>'></td>
-                    </tr>
-                    <tr>
-                        <td><input type='submit' name='action' value='Install'></td>
-                    </tr>
-                    </tbody>
-                </table>
-            </form>
-            <%
-            } else {
-            %>
-            Installation Successful!
-            <%
-                        }
-
-                    }
-                } %>
-        </div>
-    </div>
-</div>
-<hr>
-
-<footer>
-    <p>Copyright &copy; 2012 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache and
-        the Apache feather logo are trademarks of The Apache Software Foundation.</p>
-</footer>
-
-
-<!-- Le javascript
-================================================== -->
-<!-- Placed at the end of the document so the pages load faster -->
-<script src="lib/jquery/jquery-1.7.2.min.js"></script>
-<script src="lib/bootstrap/2.1.1/js/bootstrap.js"></script>
-
-</body>
-</html>
-
-<%!
-    private String safeGetAbsolutePath(File file) {
-        if (file == null) return "";
-        return file.getAbsolutePath();
-    }
-%>
diff --git a/tomee/tomee-webapp/src/main/webapp/invokeobj.jsp b/tomee/tomee-webapp/src/main/webapp/invokeobj.jsp
deleted file mode 100644
index 6f3f021..0000000
--- a/tomee/tomee-webapp/src/main/webapp/invokeobj.jsp
+++ /dev/null
@@ -1,735 +0,0 @@
-<% out.print("<!DOCTYPE html>"); %>
-<!--
-
-    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.
-
--->
-
-<!-- $Rev: 597221 $ $Date: 2007-11-21 22:51:05 +0100 (Wed, 21 Nov 2007) $ -->
-
-<%@ page import="
-javax.servlet.http.HttpServletRequest,
-javax.servlet.jsp.JspWriter,
-java.io.ByteArrayOutputStream,
-java.io.PrintStream,
-java.lang.reflect.InvocationTargetException,
-java.lang.reflect.Method,
-java.lang.reflect.Modifier,
-java.util.HashMap,
-java.util.Iterator,
-java.util.Set
-"%>
-<%@ page import="java.util.Map" %>
-<html>
-<head>
-    <meta charset="utf-8">
-    <title>TomEE</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="lib/bootstrap/2.1.1/css/bootstrap.css" rel="stylesheet">
-    <style type="text/css">
-        body {
-            padding-top: 60px;
-            padding-bottom: 40px;
-        }
-        .sidebar-nav {
-            padding: 9px 0;
-        }
-    </style>
-    <link href="lib/bootstrap/2.1.1/css/bootstrap-responsive.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
-    <![endif]-->
-</head>
-
-<body>
-
-<div class="navbar navbar-inverse navbar-fixed-top">
-    <div class="navbar-inner">
-        <div class="container-fluid">
-            <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-            </a>
-            <a class="brand" href="http://openejb.apache.org">TomEE</a>
-            <div class="nav-collapse">
-                <ul class="nav">
-                    <li><a href="index.jsp">Index</a></li>
-                    <li><a href="viewjndi.jsp">JNDI</a></li>
-                    <li><a href="viewejb.jsp">EJB</a></li>
-                    <li><a href="viewclass.jsp">Class</a></li>
-                    <li class="active"><a href="invokeobj.jsp">Invoke</a></li>
-                </ul>
-
-            </div><!--/.nav-collapse -->
-        </div>
-    </div>
-</div>
-
-<div class="container-fluid">
-    <div class="row-fluid">
-        <div class="span12">
-            <h2>OpenEJB Object Invoker</h2>
-<%
-    try{
-        synchronized (this) {
-            main(request, session, out);
-        }
-    } catch (Exception e){
-        out.println("<p>FAIL</p>");
-        //throw e;
-        return;
-    }
-%>
-        </div>
-    </div>
-    <hr>
-
-    <footer>
-        <p>Copyright &copy; 2012  The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
-    </footer>
-</div>
-
-
-<!-- Le javascript
-================================================== -->
-<!-- Placed at the end of the document so the pages load faster -->
-<script src="lib/jquery/jquery-1.7.2.min.js"></script>
-<script src="lib/bootstrap/2.1.1/js/bootstrap.js"></script>
-
-</body>
-</html>
-
-<%!
-    String tab = "&nbsp;&nbsp;&nbsp;&nbsp;";
-
-    static final String invLock = "lock";
-    static int invCount;
-
-    HttpSession session;
-    HttpServletRequest request;
-    JspWriter out;
-
-    class Invocation {
-
-        String id = "inv";
-        String objID;
-        Class clazz;
-        Object target;
-        Method method;
-        Object[] args;
-        Object result;
-
-        Invocation() {
-            synchronized (invLock) {
-                id += ++invCount;
-            }
-        }
-
-        public Object invoke() throws Exception {
-            if (target == null || method == null || args == null) {
-                throw new Exception("This invocation contains null objects.");
-            }
-            return method.invoke(target, args);
-        }
-    }
-
-    /**
-     * The main method of this JSP
-     */
-    public void main(HttpServletRequest request, HttpSession session, JspWriter out) throws Exception {
-        this.request = request;
-        this.session = session;
-        this.out = out;
-
-        printObjectSection();
-    }
-
-    /**
-     * Print the list of objects with the focused object as
-     * selected in the box.
-     * If no object is selected, make an entry called "Pick an Object"
-     */
-    public void printObjectSection() throws Exception {
-        String removeID = request.getParameter("remove");
-        if (removeID != null) {
-            removeObject(removeID);
-        }
-
-        Invocation inv = null;
-        String invID = request.getParameter("inv");
-
-        if (invID == null) {
-            String objID = request.getParameter("obj");
-            if (objID != null) {
-                inv = new Invocation();
-                inv.target = getObject(objID);
-                inv.objID = objID;
-                setInvocation(inv.id, inv);
-            }
-        } else {
-            inv = getInvocation(invID);
-        }
-
-        if (inv == null || inv.target == null) {
-            // Pick from the list
-            printObjectList();
-
-        } else {
-            out.print("<h3>Object</h3>");
-            out.print("<p>" + inv.objID + " <a href='invokeobj.jsp'>[change]</a></p>");
-
-            // Show the selected item and continue
-            printMethodSection(inv);
-        }
-    }
-
-    /**
-     * Prints the list of objects that can be invoked
-     */
-    public void printObjectList() throws Exception {
-
-        Map<String, Object> objects = getObjectMap();
-        if (objects.size() == 0) {
-            out.print("<p>No object have been created. <A HREF='viewjndi.jsp'>Browse for an EJB</A></p>");
-
-        } else {
-            out.print("<h3>Pick and object to invoke</h3>");
-
-            Set keys = objects.keySet();
-            Iterator iterator = keys.iterator();
-            out.print("<ul>");
-            while (iterator.hasNext()) {
-                String entry = (String) iterator.next();
-                out.print("<li><a href='invokeobj.jsp?obj=" + entry + "'>" + entry + "</a><a href='invokeobj.jsp?remove=" + entry + "'> [remove]</a></li>");
-            }
-            out.print("</ul>");
-        }
-    }
-
-    /**
-     * Print the list of methods with the focused method as
-     * selected in the box.
-     * If no method is selected, make an entry called "Pick a Method"
-     */
-    public void printMethodSection(Invocation inv) throws Exception {
-        String methodID = request.getParameter("m");
-
-        if (methodID != null) {
-            int method = Integer.parseInt(methodID);
-            Method[] methods = inv.clazz.getMethods();
-            if (method > -1 && method < methods.length) {
-                inv.method = methods[method];
-            } else {
-                inv.method = null;
-                inv.args = null;
-            }
-        }
-
-        if (inv.method == null) {
-            // Pick from the list
-            printMethodList(inv);
-
-        } else {
-            out.print("<h3>Method</h3>");
-            out.print("<p>" + formatMethod(inv.method) + " <a href='invokeobj.jsp?m=-1&inv=" + inv.id + "'>[change]</a></<p>");
-
-            // Show the selected item and continue
-            printArgumentSection(inv);
-        }
-
-    }
-
-    /**
-     * Prints the list of methods that can be invoked
-     */
-    public void printMethodList(Invocation inv) throws Exception {
-        out.print("<b>Pick a method to invoke</b><br>");
-        //out.print("<b>Methods:</b><br>");
-
-        Object obj = inv.target;
-        Class clazz = inv.target.getClass();
-        if (obj instanceof javax.ejb.EJBHome) {
-            clazz = obj.getClass().getInterfaces()[0];
-        } else if (obj instanceof javax.ejb.EJBObject) {
-            clazz = obj.getClass().getInterfaces()[0];
-        } else {
-            clazz = obj.getClass();
-        }
-        inv.clazz = clazz;
-
-        out.print("<ul>");
-        Method[] methods = clazz.getMethods();
-        for (int i = 0; i < methods.length; i++) {
-            Method m = methods[i];
-            if (Modifier.isPublic(m.getModifiers())) {
-                out.print("<li><a href='invokeobj.jsp?inv=" + inv.id + "&m=" + i + "'>" + formatMethod(m) + "</a></li>");
-            }
-        }
-        out.print("</ul>");
-    }
-
-    /**
-     * Print the list of arguments.
-     * If no arguments have been selected, 
-     * show the argument entry form.
-     */
-    public void printArgumentSection(Invocation inv) throws Exception {
-        String args = request.getParameter("args");
-
-        if (args != null) {
-            parseArgs(inv);
-        }
-
-        if (inv.method.getParameterTypes().length == 0) {
-            inv.args = new Object[]{};
-        }
-
-        if (inv.args == null) {
-            printArgumentList(inv);
-        } else {
-            out.print("<h3>Arguments</h3>");
-
-            if (inv.args.length == 0) {
-                out.print("<p>none</p>");
-            }
-
-            out.print("<ol>");
-
-            for (int i = 0; i < inv.args.length; i++) {
-                String val = formatObject(inv.args[i]);
-                out.print("<li><i>" + val + "</i>");
-            }
-
-            out.print("</ol>");
-
-            printInvokeSection(inv);
-        }
-    }
-
-    public void parseArgs(Invocation inv) throws Exception {
-        Class[] pTypes = inv.method.getParameterTypes();
-        inv.args = new Object[pTypes.length];
-
-        for (int i = 0; i < pTypes.length; i++) {
-            Class type = pTypes[i];
-            String unparsedArg = request.getParameter("arg" + i);
-            inv.args[i] = getConverter(type).convert(type, unparsedArg);
-        }
-    }
-
-    public void printArgumentList(Invocation inv) throws Exception {
-        out.print("<b>Fill in the arguments</b><br>");
-        Class[] pTypes = inv.method.getParameterTypes();
-        out.print("<FORM NAME='args' METHOD='GET' ACTION='invokeobj.jsp'>");
-        out.print("<INPUT type='HIDDEN' NAME='inv' VALUE='" + inv.id + "'>");
-        out.print("<table>");
-        for (int i = 0; i < pTypes.length; i++) {
-            Converter con = getConverter(pTypes[i]);
-            out.print("<tr>");
-            out.print("<td align='right'><font size='2'>");
-            out.print(tab + getShortClassRef(pTypes[i]));
-            out.print("</font></td>");
-            out.print("<td><font size='2'>");
-            out.print("&nbsp;&nbsp;arg" + i);
-            out.print("</font></td>");
-            out.print("<td><font size='2'>");
-            out.print("&nbsp;&nbsp;" + con.getInputControl(i, pTypes[i]));
-            out.print("</font></td>");
-        }
-        out.print("</table>");
-
-        out.print("<br><br>");
-        out.print("<INPUT type='SUBMIT' NAME='args' value='Continue'>");
-        out.print("</form>");
-
-    }
-
-    /**
-     * Print the list of arguments.
-     * If no arguments have been selected, 
-     * show the argument entry form.
-     */
-    public void printInvokeSection(Invocation inv) throws Exception {
-        String doInvoke = request.getParameter("invoke");
-        if (doInvoke != null) {
-            invoke(inv);
-        } else {
-            out.print("<FORM NAME='invoke' METHOD='GET' ACTION='invokeobj.jsp'>");
-            out.print("<INPUT type='HIDDEN' NAME='inv' VALUE='" + inv.id + "'>");
-            out.print("<INPUT type='SUBMIT' NAME='invoke' value='Invoke'>");
-            out.print("</FORM>");
-        }
-
-    }
-
-    String pepperImg = "<img src='images/pepper.gif' border='0'>";
-
-    public void invoke(Invocation inv) throws Exception {
-
-        try {
-            inv.result = inv.invoke();
-
-            out.print("<h3>Result:</h3>");
-            if (inv.method.getReturnType() == java.lang.Void.TYPE) {
-                out.print("<p>Done</p>");
-            } else if (inv.result == null) {
-                out.print("<p><i>null</i></p>");
-            } else {
-                String clazz = inv.result.getClass().getName();
-                String objID = getObjectID(inv.result);
-                setObject(objID, inv.result);
-
-                out.print("<table class='table table-bordered table-striped'><colgroup><col class='span2'><col class='span10'></colgroup><tbody>");
-                printRow("<i>id</i>", objID);
-                printRow("<i>class</i>", "<a href='viewclass.jsp?class=" + clazz + "'>" + clazz + "</a>");
-                printRow("<i>toString</i>", formatObject(inv.result));
-                out.print("</tbody></table>");
-
-                out.print("<h3>Actions:</h3>");
-                out.print("<a href='invokeobj.jsp?obj=" + objID + "'>Invoke a method on the object</a> or <a href='invokeobj.jsp?remove="  + objID + "'>Discard the object</a>");
-            }
-        } catch (InvocationTargetException e) {
-            out.print("<h3>Exception:</h3>");
-            Throwable t = e.getTargetException();
-
-            out.print("<p>");
-            out.print("Received a " + t.getClass().getName());
-            //out.print(inv.method+"<br><br>");
-            if (t instanceof java.rmi.RemoteException) {
-                out.print("<br><br>");
-                out.print("<i>RemoteException message:</i><br>");
-                out.print(t.getMessage());
-                out.print("<br><br>");
-                out.print("<i>Nested exception's stack trace:</i><br>");
-
-                while (t instanceof java.rmi.RemoteException) {
-                    t = ((java.rmi.RemoteException) t).detail;
-                }
-                out.print(formatThrowable(t));
-            } else {
-                out.print("<br><br>" + formatThrowable(t));
-            }
-
-            out.print("</p>");
-
-        } catch (Throwable e) {
-            out.print("<h3>Exception:</h3>");
-
-            out.print("<p>");
-            out.print(formatObject(e));
-            out.print("</p>");
-        }
-    }
-
-    public String formatThrowable(Throwable err) throws Exception {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        err.printStackTrace(new PrintStream(baos));
-        byte[] bytes = baos.toByteArray();
-        StringBuffer sb = new StringBuffer(bytes.length);
-        for (int i = 0; i < bytes.length; i++) {
-            char c = (char) bytes[i];
-            switch (c) {
-                case' ':
-                    sb.append("&nbsp;");
-                    break;
-                case'\n':
-                    sb.append("<br>");
-                    break;
-                case'\r':
-                    break;
-                default:
-                    sb.append(c);
-            }
-        }
-        return sb.toString();
-    }
-
-
-    public String formatObject(Object obj) throws Exception {
-        int max = 75;
-        String val = obj.toString();
-        val = (val.length() > max) ? val.substring(0, max - 3) + "..." : val;
-        char[] chars = new char[val.length()];
-        val.getChars(0, chars.length, chars, 0);
-
-        StringBuffer sb = new StringBuffer(chars.length);
-        for (int j = 0; j < chars.length; j++) {
-            char c = chars[j];
-            switch (c) {
-                case'<':
-                    sb.append("&lt;");
-                    break;
-                case'>':
-                    sb.append("&gt;");
-                    break;
-                case'&':
-                    sb.append("&amp;");
-                    break;
-                default:
-                    sb.append(c);
-            }
-        }
-        return sb.toString();
-    }
-
-    /*-----------------------------------------------------------*/
-    // Method name formatting
-    /*-----------------------------------------------------------*/
-    public String formatMethod(Method m) throws Exception {
-        StringBuffer sb = new StringBuffer();
-
-        sb.append(getShortClassName(m.getReturnType())).append("&nbsp;&nbsp;");
-        sb.append(m.getName());
-
-        Class[] params = m.getParameterTypes();
-        sb.append("(");
-        for (int j = 0; j < params.length; j++) {
-            sb.append(getShortClassName(params[j]));
-            if (j != params.length - 1) {
-                sb.append(",&nbsp;");
-            }
-        }
-        sb.append(")");
-
-        Class[] excp = m.getExceptionTypes();
-        if (excp.length > 0) {
-            sb.append(" throws&nbsp;");
-            for (int j = 0; j < excp.length; j++) {
-                sb.append(getShortClassName(excp[j]));
-                if (j != excp.length - 1) {
-                    sb.append(",&nbsp;");
-                }
-            }
-        }
-        return sb.toString();
-    }
-
-    /*-----------------------------------------------------------*/
-    // Class name formatting
-    /*-----------------------------------------------------------*/
-    public String getShortClassName(Class clazz) throws Exception {
-        if (clazz.isPrimitive()) {
-            return clazz.getName();
-        } else if (clazz.isArray() && clazz.getComponentType().isPrimitive()) {
-            return clazz.getComponentType() + "[]";
-        } else if (clazz.isArray()) {
-            String name = clazz.getComponentType().getName();
-            int dot = name.lastIndexOf(".") + 1;
-            String shortName = name.substring(dot, name.length());
-            return shortName + "[]";
-        } else {
-            String name = clazz.getName();
-            int dot = name.lastIndexOf(".") + 1;
-            String shortName = name.substring(dot, name.length());
-            return shortName;
-        }
-    }
-
-    public String getShortClassRef(Class clazz) throws Exception {
-        if (clazz.isPrimitive()) {
-            return "<font color='gray'>" + clazz.getName() + "</font>";
-        } else if (clazz.isArray() && clazz.getComponentType().isPrimitive()) {
-            return "<font color='gray'>" + clazz.getComponentType() + "[]</font>";
-        } else if (clazz.isArray()) {
-            String name = clazz.getComponentType().getName();
-            int dot = name.lastIndexOf(".") + 1;
-            String shortName = name.substring(dot, name.length());
-            return "<a href='viewclass.jsp?class=" + name + "'>" + shortName + "[]</a>";
-        } else {
-            String name = clazz.getName();
-            int dot = name.lastIndexOf(".") + 1;
-            String shortName = name.substring(dot, name.length());
-            return "<a href='viewclass.jsp?class=" + name + "'>" + shortName + "</a>";
-        }
-    }
-
-    protected void printRow(String col1, String col2) throws Exception {
-        out.print("<tr><td><font size='2'>");
-        out.print(col1);
-        out.print("</font></td><td><font size='2'>");
-        out.print(col2);
-        out.print("</font></td></tr>");
-    }
-
-    /*-----------------------------------------------------------*/
-    // Object list support
-    /*-----------------------------------------------------------*/
-    public String getObjectID(Object obj) {
-        Class clazz = obj.getClass();
-        if (obj instanceof javax.ejb.EJBHome) {
-            clazz = obj.getClass().getInterfaces()[0];
-        } else if (obj instanceof javax.ejb.EJBObject) {
-            clazz = obj.getClass().getInterfaces()[0];
-        }
-        return clazz.getName() + "@" + obj.hashCode();
-    }
-
-    public Object getObject(String objID) {
-        return getObjectMap().get(objID);
-    }
-
-    public void setObject(String objID, Object obj) {
-        getObjectMap().put(objID, obj);
-    }
-
-    public void removeObject(String objID) {
-        getObjectMap().remove(objID);
-    }
-
-    @SuppressWarnings({"unchecked"})
-    public Map<String, Object> getObjectMap() {
-        Map<String, Object> objects = (Map<String, Object>) session.getAttribute("objects");
-        return objects;
-    }
-
-    /*-----------------------------------------------------------*/
-    // Invocation list support
-    /*-----------------------------------------------------------*/
-    public Invocation getInvocation(String invID) {
-        return getInvocationMap().get(invID);
-    }
-
-    public void setInvocation(String invID, Invocation obj) {
-        getInvocationMap().put(invID, obj);
-    }
-
-    @SuppressWarnings({"unchecked"})
-    public Map<String, Invocation> getInvocationMap() {
-        Map<String, Invocation> invocations = (Map<String, Invocation>) session.getAttribute("invocations");
-        if (invocations == null) {
-            invocations = new HashMap<String, Invocation>();
-            session.setAttribute("invocations", invocations);
-        }
-        return invocations;
-    }
-
-    /*-----------------------------------------------------------*/
-    // String conversion support
-    /*-----------------------------------------------------------*/
-    final Map<Class, Converter> converters = initConverters();
-
-    public Converter getConverter(Class type) {
-        Converter con = converters.get(type);
-        if (con == null) {
-            con = defaultConverter;
-        }
-        return con;
-    }
-
-    final Converter defaultConverter = new ObjectConverter();
-
-    private Map<Class, Converter> initConverters() {
-        Map<Class, Converter> map = new HashMap<Class, Converter>();
-
-        map.put(String.class, new StringConverter());
-        map.put(Character.class, new CharacterConverter());
-        map.put(Boolean.class, new BooleanConverter());
-        map.put(Byte.class, new ByteConverter());
-        map.put(Short.class, new ShortConverter());
-        map.put(Integer.class, new IntegerConverter());
-        map.put(Long.class, new LongConverter());
-        map.put(Float.class, new FloatConverter());
-        map.put(Double.class, new DoubleConverter());
-        map.put(Object.class, new ObjectConverter());
-        map.put(Character.TYPE, map.get(Character.class));
-        map.put(Boolean.TYPE, map.get(Boolean.class));
-        map.put(Byte.TYPE, map.get(Byte.class));
-        map.put(Short.TYPE, map.get(Short.class));
-        map.put(Integer.TYPE, map.get(Integer.class));
-        map.put(Long.TYPE, map.get(Long.class));
-        map.put(Float.TYPE, map.get(Float.class));
-        map.put(Double.TYPE, map.get(Double.class));
-
-        return map;
-    }
-
-
-    abstract class Converter {
-        public abstract Object convert(Class type, String raw) throws Exception;
-
-        public String getInputControl(int argNumber, Class type) throws Exception {
-            return "<INPUT type='text' NAME='arg" + argNumber + "'>";
-        }
-    }
-
-    class StringConverter extends Converter {
-        public Object convert(Class type, String raw) throws Exception {
-            return raw;
-        }
-    }
-
-    class CharacterConverter extends Converter {
-        public Object convert(Class type, String raw) throws Exception {
-            return new Character(raw.charAt(0));
-        }
-    }
-
-    class BooleanConverter extends Converter {
-        public Object convert(Class type, String raw) throws Exception {
-            return new Boolean(raw);
-        }
-    }
-
-    class ByteConverter extends Converter {
-        public Object convert(Class type, String raw) throws Exception {
-            return new Byte(raw);
-        }
-    }
-
-    class ShortConverter extends Converter {
-        public Object convert(Class type, String raw) throws Exception {
-            return new Short(raw);
-        }
-    }
-
-    class IntegerConverter extends Converter {
-        public Object convert(Class type, String raw) throws Exception {
-            return new Integer(raw);
-        }
-    }
-
-    class LongConverter extends Converter {
-        public Object convert(Class type, String raw) throws Exception {
-            return new Long(raw);
-        }
-    }
-
-    class FloatConverter extends Converter {
-        public Object convert(Class type, String raw) throws Exception {
-            return new Float(raw);
-        }
-    }
-
-    class DoubleConverter extends Converter {
-        public Object convert(Class type, String raw) throws Exception {
-            return new Double(raw);
-        }
-    }
-
-    class ObjectConverter extends Converter {
-        public Object convert(Class type, String raw) throws Exception {
-            return raw;
-        }
-    }
-%>
-
diff --git a/tomee/tomee-webapp/src/main/webapp/testejb.jsp b/tomee/tomee-webapp/src/main/webapp/testejb.jsp
deleted file mode 100644
index eb595b5..0000000
--- a/tomee/tomee-webapp/src/main/webapp/testejb.jsp
+++ /dev/null
@@ -1,277 +0,0 @@
-<% out.print("<!DOCTYPE html>"); %>
-<!--
-
-    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.
-
--->
-
-<!-- $Rev: 597221 $ $Date: 2007-11-21 22:51:05 +0100 (Wed, 21 Nov 2007) $ -->
-
-<%@ page import="
-javax.naming.Context,
-javax.naming.InitialContext,
-javax.servlet.http.HttpServletRequest,
-javax.servlet.jsp.JspWriter,
-java.io.ByteArrayOutputStream,
-java.io.IOException,
-java.io.PrintStream,
-java.lang.reflect.Method,
-java.util.Properties
-"%>
-<%@ page import="java.io.PrintWriter" %>
-<html>
-<head>
-    <meta charset="utf-8">
-    <title>TomEE</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="lib/bootstrap/2.1.1/css/bootstrap.css" rel="stylesheet">
-    <style type="text/css">
-        body {
-            padding-top: 60px;
-            padding-bottom: 40px;
-        }
-        .sidebar-nav {
-            padding: 9px 0;
-        }
-    </style>
-    <link href="lib/bootstrap/2.1.1/css/bootstrap-responsive.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
-    <![endif]-->
-</head>
-
-<body>
-
-<div class="navbar navbar-inverse navbar-fixed-top">
-    <div class="navbar-inner">
-        <div class="container-fluid">
-            <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-            </a>
-            <a class="brand" href="http://openejb.apache.org">TomEE</a>
-            <div class="nav-collapse">
-                <ul class="nav">
-                    <li class="active"><a href="index.jsp">Index</a></li>
-                    <li><a href="viewjndi.jsp">JNDI</a></li>
-                    <li><a href="viewejb.jsp">EJB</a></li>
-                    <li><a href="viewclass.jsp">Class</a></li>
-                    <li><a href="invokeobj.jsp">Invoke</a></li>
-                </ul>
-
-            </div><!--/.nav-collapse -->
-        </div>
-    </div>
-</div>
-
-<div class="container-fluid">
-    <div class="row-fluid">
-        <div class="span12">
-            <h2>Testing an Enterprise JavaBean</h2>
-            <table class='table table-striped table-bordered table-condensed'><tbody>
-<%
-    try{
-        synchronized (this) {
-            main(request, session, out);
-        }
-    } catch (Exception e){
-        out.println("<p>FAIL</p>");
-        return;
-    }
-%>
-            </tbody></table>
-        </div>
-    </div>
-    <hr>
-
-    <footer>
-        <p>Copyright &copy; 2012  The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
-    </footer>
-</div>
-
-
-<!-- Le javascript
-================================================== -->
-<!-- Placed at the end of the document so the pages load faster -->
-<script src="lib/jquery/jquery-1.7.2.min.js"></script>
-<script src="lib/bootstrap/2.1.1/js/bootstrap.js"></script>
-
-</body>
-</html>
-
-<%!
-    static String invLock = "lock";
-    static int invCount;
-
-    String OK = "<span style='color: green'><b>OK</b></span>";
-    String FAIL = "<span style='color: red'><b>FAIL</b></span>";
-
-    private Object getEjbObj(InitialContext ctx, ClassLoader myLoader) {
-        try {
-            Class[] params = new Class[0];
-            Class homeInterface = Class.forName("javax.management.j2ee.ManagementHome", true, myLoader);
-            Method create = homeInterface.getDeclaredMethod("create", params);
-
-            Object ejbHome = ctx.lookup("MEJB");
-            Object ejbObject = create.invoke(ejbHome);
-
-            return ejbObject;
-
-        } catch (Exception e) {
-            return null;
-        }
-    }
-
-    /**
-     * The main method of this JSP
-     */
-    public void main(final HttpServletRequest request, final HttpSession session, final JspWriter out) throws Exception {
-        final ClassLoader myLoader = this.getClass().getClassLoader();
-        final Properties p = new Properties();
-        p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
-        p.put("openejb.loader", "embed");
-
-        final InitialContext ctx = new InitialContext(p);
-
-        // ---------------------------------------------------
-        //  Can I lookup a home interface from the testsuite?
-        // ---------------------------------------------------
-
-        printTest(out, "Looking up an ejb home", new TestAction() {
-            @Override
-            public String run() throws Exception {
-                Object ejbHome = ctx.lookup("MEJB");
-                if (ejbHome instanceof java.rmi.Remote) {
-                    return OK;
-                } else {
-                    return FAIL;
-                }
-            }
-        });
-
-        // ---------------------------------------------------
-        //  Is the home interface visible?
-        // ---------------------------------------------------
-
-        printTest(out, "Checking for the home interface class definition", new TestAction() {
-            @Override
-            public String run() throws Exception {
-                Class.forName("javax.management.j2ee.ManagementHome", true, myLoader);
-                return OK;
-            }
-        });
-
-        // ---------------------------------------------------
-        //  Can I invoke a create method on the ejb home?
-        // ---------------------------------------------------
-
-        printTest(out, "Invoking the create method on the ejb home", new TestAction() {
-            @Override
-            public String run() throws Exception {
-                Object ejbObject = getEjbObj(ctx, myLoader);
-                if (java.rmi.Remote.class.isInstance(ejbObject)) {
-                    return OK;
-                } else {
-                    return FAIL;
-                }
-            }
-        });
-
-        // ---------------------------------------------------
-        //  Is the remote interface visible?
-        // ---------------------------------------------------
-
-        printTest(out, "Checking for the remote interface class definition", new TestAction() {
-            @Override
-            public String run() throws Exception {
-                Class.forName("javax.management.j2ee.Management", true, myLoader);
-                return OK;
-            }
-        });
-
-        // ---------------------------------------------------
-        //  Can I invoke a business method on the ejb object?
-        // ---------------------------------------------------
-
-        printTest(out, "Invoking a business method on the ejb object", new TestAction() {
-            @Override
-            public String run() throws Exception {
-                Class remoteInterface = Class.forName("javax.management.j2ee.Management", true, myLoader);
-                Method businessMethod = remoteInterface.getDeclaredMethod("getMBeanCount");
-                Object ejbObject = getEjbObj(ctx, myLoader);
-
-                Object returnValue = null;
-                if(ejbObject != null) {
-                    returnValue = businessMethod.invoke(ejbObject);
-                }
-
-                if (java.lang.Integer.class.isInstance(returnValue)) {
-                    return OK;
-                } else {
-                    return FAIL;
-                }
-            }
-        });
-
-    }
-
-    private interface TestAction {
-        String run() throws Exception;
-    }
-
-    protected void printTest(JspWriter out, String test, TestAction testAction) throws IOException {
-        out.print("<tr><td>");
-        out.print(test);
-        out.print("</td><td>");
-        try {
-            out.print(testAction.run());
-        } catch (Exception e) {
-            out.print(FAIL + "<BR>" + formatThrowable(e));
-        }
-        out.print("</td></tr>");
-    }
-
-    public String formatThrowable(Throwable err) {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        err.printStackTrace(new PrintStream(baos));
-        byte[] bytes = baos.toByteArray();
-        StringBuffer sb = new StringBuffer(bytes.length);
-        for (int i = 0; i < bytes.length; i++) {
-            char c = (char) bytes[i];
-            switch (c) {
-                case' ':
-                    sb.append("&nbsp;");
-                    break;
-                case'\n':
-                    sb.append("<br>");
-                    break;
-                case'\r':
-                    break;
-                default:
-                    sb.append(c);
-            }
-        }
-        return sb.toString();
-    }
-%>
-
diff --git a/tomee/tomee-webapp/src/main/webapp/testhome.jsp b/tomee/tomee-webapp/src/main/webapp/testhome.jsp
deleted file mode 100644
index e9480f8..0000000
--- a/tomee/tomee-webapp/src/main/webapp/testhome.jsp
+++ /dev/null
@@ -1,201 +0,0 @@
-<% out.print("<!DOCTYPE html>"); %>
-<!--
-
-    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.
-
--->
-
-<!-- $Rev: 597221 $ $Date: 2007-11-21 22:51:05 +0100 (Wed, 21 Nov 2007) $ -->
-
-<%@ page import="
-javax.servlet.http.HttpServletRequest,
-javax.servlet.jsp.JspWriter,
-java.io.File
-"%>
-<%@ page import="org.apache.tomee.common.TomcatVersion"%>
-<html>
-
-<head>
-    <meta charset="utf-8">
-    <title>TomEE</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="lib/bootstrap/2.1.1/css/bootstrap.css" rel="stylesheet">
-    <style type="text/css">
-        body {
-            padding-top: 60px;
-            padding-bottom: 40px;
-        }
-        .sidebar-nav {
-            padding: 9px 0;
-        }
-    </style>
-    <link href="lib/bootstrap/2.1.1/css/bootstrap-responsive.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
-    <![endif]-->
-</head>
-
-<body>
-
-<div class="navbar navbar-inverse navbar-fixed-top">
-    <div class="navbar-inner">
-        <div class="container-fluid">
-            <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-            </a>
-            <a class="brand" href="http://openejb.apache.org">TomEE</a>
-            <div class="nav-collapse">
-                <ul class="nav">
-                    <li class="active"><a href="index.jsp">Index</a></li>
-                    <li><a href="viewjndi.jsp">JNDI</a></li>
-                    <li><a href="viewejb.jsp">EJB</a></li>
-                    <li><a href="viewclass.jsp">Class</a></li>
-                    <li><a href="invokeobj.jsp">Invoke</a></li>
-                </ul>
-
-            </div><!--/.nav-collapse -->
-        </div>
-    </div>
-</div>
-
-<div class="container-fluid">
-    <div class="row-fluid">
-        <div class="span12">
-            <h2>Testing openejb.home validity</h2>
-            <table class='table table-striped table-bordered table-condensed'><tbody>
-<%
-    try{
-        synchronized (this) {
-            main(request, session, out);
-        }
-    } catch (Exception e){
-        out.println("FAIL");
-        //throw e;
-        return;
-    }
-%>
-            </tbody></table>
-            <a class='btn' href='testint.jsp'>Continue tests</a>
-        </div>
-    </div>
-    <hr>
-
-    <footer>
-        <p>Copyright &copy; 2012  The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
-    </footer>
-</div>
-
-
-<!-- Le javascript
-================================================== -->
-<!-- Placed at the end of the document so the pages load faster -->
-<script src="lib/jquery/jquery-1.7.2.min.js"></script>
-<script src="lib/bootstrap/2.1.1/js/bootstrap.js"></script>
-
-</body>
-</html>
-
-<%!
-    static String invLock = "lock";
-    static int invCount;
-
-    HttpSession session;
-    HttpServletRequest request;
-    JspWriter out;
-
-    String OK = "<td><span style='color: green'><b>OK</b></span></td>";
-    String FAIL = "<td><span style='color: red'><b>FAIL</b></span></td>";
-
-    /**
-     * The main method of this JSP
-     */
-    public void main(HttpServletRequest request, HttpSession session, JspWriter out) throws Exception {
-        this.request = request;
-        this.session = session;
-        this.out = out;
-
-        try {
-            // The openejb.home must be set
-            out.print("<tr><td>openejb.home is set</td> ");
-            String homePath = System.getProperty("openejb.home");
-            if (homePath == null) handleError(NO_HOME, INSTRUCTIONS);
-            out.print(OK);
-            out.print("</tr>");
-
-            // The openejb.home must exist
-            out.print("<tr><td>openejb.home exists</td> ");
-            File openejbHome = new File(homePath);
-            if (!openejbHome.exists()) handleError(BAD_HOME + homePath, NOT_THERE, INSTRUCTIONS);
-            out.print(OK);
-            out.print("</tr>");
-
-            // The openejb.home must be a directory
-            out.print("<tr><td>openejb.home is a directory</td> ");
-            if (!openejbHome.isDirectory()) handleError(BAD_HOME + homePath, NOT_DIRECTORY, INSTRUCTIONS);
-            out.print(OK);
-            out.print("</tr>");
-
-            // The openejb.home must contain a 'lib' directory
-            out.print("<tr><td>has lib directory</td> ");
-
-            File openejbHomeLib;
-            if (TomcatVersion.v6.isTheVersion() || TomcatVersion.v7.isTheVersion()) {
-                openejbHomeLib = new File(openejbHome, "lib");
-            } else {
-                File common = new File(openejbHome, "common");
-                openejbHomeLib = new File(common, "lib");
-            }
-            if (!openejbHomeLib.exists()) handleError(BAD_HOME + homePath, NO_LIB, INSTRUCTIONS);
-            out.print(OK);
-            out.print("</tr>");
-
-        } catch (Exception e) {
-            out.print(FAIL);
-            out.print("<p>" + e.getMessage() + "</p>");
-        }
-    }
-
-    String NO_HOME = "The openejb.home is not set.";
-    String BAD_HOME = "Invalid openejb.home: ";
-    String NOT_THERE = "The path specified does not exist.";
-    String NOT_DIRECTORY = "The path specified is not a directory.";
-    String NO_LIB = "The path specified is not correct, it does not contain a 'lib' directory.";
-    String INSTRUCTIONS = "Please edit the web.xml of the openejb_loader webapp and set the openejb.home init-param to the full path where OpenEJB is installed.";
-
-    private void handleError(String m1, String m2, String m3) throws Exception {
-        String msg = "<br><b>Please Fix:</b><br><br>";
-        msg += m1 + "<br><br>";
-        msg += m2 + "<br><br>";
-        msg += m3 + "<br>";
-        throw new Exception(msg);
-    }
-
-    private void handleError(String m1, String m2) throws Exception {
-        String msg = "<br><b>Please Fix:</b><br><br>";
-        msg += m1 + "<br><br>";
-        msg += m2 + "<br>";
-        throw new Exception(msg);
-    }
-%>
-
diff --git a/tomee/tomee-webapp/src/main/webapp/testint.jsp b/tomee/tomee-webapp/src/main/webapp/testint.jsp
deleted file mode 100644
index 6885887..0000000
--- a/tomee/tomee-webapp/src/main/webapp/testint.jsp
+++ /dev/null
@@ -1,256 +0,0 @@
-<% out.print("<!DOCTYPE html>"); %>
-<!--
-
-    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.
-
--->
-
-<!-- $Rev: 597221 $ $Date: 2007-11-21 22:51:05 +0100 (Wed, 21 Nov 2007) $ -->
-
-<%@ page import="
-javax.naming.Context,
-javax.naming.InitialContext,
-javax.servlet.http.HttpServletRequest,
-javax.servlet.jsp.JspWriter,
-java.io.ByteArrayOutputStream,
-java.io.IOException,
-java.io.PrintStream,
-java.lang.reflect.Method,
-java.util.Properties
-"%>
-<html>
-<head>
-    <meta charset="utf-8">
-    <title>TomEE</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="lib/bootstrap/2.1.1/css/bootstrap.css" rel="stylesheet">
-    <style type="text/css">
-        body {
-            padding-top: 60px;
-            padding-bottom: 40px;
-        }
-        .sidebar-nav {
-            padding: 9px 0;
-        }
-    </style>
-    <link href="lib/bootstrap/2.1.1/css/bootstrap-responsive.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
-    <![endif]-->
-</head>
-
-<body>
-
-<div class="navbar navbar-inverse navbar-fixed-top">
-    <div class="navbar-inner">
-        <div class="container-fluid">
-            <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-            </a>
-            <a class="brand" href="http://openejb.apache.org">TomEE</a>
-            <div class="nav-collapse">
-                <ul class="nav">
-                    <li class="active"><a href="index.jsp">Index</a></li>
-                    <li><a href="viewjndi.jsp">JNDI</a></li>
-                    <li><a href="viewejb.jsp">EJB</a></li>
-                    <li><a href="viewclass.jsp">Class</a></li>
-                    <li><a href="invokeobj.jsp">Invoke</a></li>
-                </ul>
-
-            </div><!--/.nav-collapse -->
-        </div>
-    </div>
-</div>
-
-<div class="container-fluid">
-    <div class="row-fluid">
-        <div class="span12">
-            <h2>Testing openejb.home validity</h2>
-            <table class='table table-striped table-bordered table-condensed'><tbody>
-<%
-    final InitialContext ctx;
-    try{
-        synchronized (this) {
-            ctx = main(request, session, out);
-        }
-    } catch (Exception e){
-        out.println("<p>FAIL</p>");
-        return;
-    }
-%>
-            </tbody></table>
-<%
-    try {
-        Object obj = ctx.lookup("client");
-        if (obj instanceof Context) {
-            out.print("<a class='btn' href='testejb.jsp'>Continue tests</a>");
-        }
-
-    } catch (Exception e) {
-    }
-%>
-
-        </div>
-    </div>
-    <hr>
-
-    <footer>
-        <p>Copyright &copy; 2012  The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
-    </footer>
-</div>
-
-
-<!-- Le javascript
-================================================== -->
-<!-- Placed at the end of the document so the pages load faster -->
-<script src="lib/jquery/jquery-1.7.2.min.js"></script>
-<script src="lib/bootstrap/2.1.1/js/bootstrap.js"></script>
-
-</body>
-</html>
-
-<%!
-    static String invLock = "lock";
-    static int invCount;
-
-    String OK = "<span style='color: green'><b>OK</b></span>";
-    String FAIL = "<span style='color: red'><b>FAIL</b></span>";
-
-    /**
-     * The main method of this JSP
-     */
-    public InitialContext main(final HttpServletRequest request, final HttpSession session, final JspWriter out) throws Exception {
-        Properties p = new Properties();
-
-        p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
-        p.put("openejb.loader", "embed");
-
-        final InitialContext ctx = new InitialContext(p);
-
-        // ---------------------------------------------------
-        //  Were the OpenEJB classes installed?
-        // ---------------------------------------------------
-
-        printTest(out, "Were the OpenEJB classes installed", new TestAction() {
-            @Override
-            public String run() throws Exception {
-                ClassLoader myLoader = this.getClass().getClassLoader();
-                Class.forName("org.apache.openejb.OpenEJB", true, myLoader);
-                return OK;
-            }
-        });
-
-
-        // ---------------------------------------------------
-        //  Are the EJB libraries visible?
-        // ---------------------------------------------------
-
-        printTest(out, "Were the EJB classes installed", new TestAction() {
-            @Override
-            public String run() throws Exception {
-                Class.forName("javax.ejb.EJBHome", true, this.getClass().getClassLoader());
-                return OK;
-            }
-        });
-
-
-        // ---------------------------------------------------
-        //  Was OpenEJB initialized (aka started)?
-        // ---------------------------------------------------
-
-        printTest(out, "Was OpenEJB initialized (aka started)", new TestAction() {
-            @Override
-            public String run() throws Exception {
-                Class openejb = Class.forName("org.apache.openejb.OpenEJB", true, this.getClass().getClassLoader());
-                Method isInitialized = openejb.getDeclaredMethod("isInitialized");
-                Boolean running = (Boolean) isInitialized.invoke(openejb);
-
-                if (running) {
-                    return OK;
-                } else {
-                    return FAIL;
-                }
-            }
-        });
-
-        // ---------------------------------------------------
-        //  Can I lookup anything?
-        // ---------------------------------------------------
-
-        printTest(out, "Performing a test lookup", new TestAction() {
-            @Override
-            public String run() throws Exception {
-                Object obj = ctx.lookup("");
-
-                if (obj.getClass().getName().equals("org.apache.openejb.core.ivm.naming.IvmContext")) {
-                    return OK;
-                } else {
-                    return FAIL;
-                }
-            }
-        });
-
-        return ctx;
-    }
-
-    private interface TestAction {
-        String run() throws Exception ;
-    }
-
-    protected void printTest(JspWriter out, String test, TestAction testAction) throws IOException {
-        out.print("<tr><td>");
-        out.print(test);
-        out.print("</td><td>");
-        try {
-            out.print(testAction.run());
-        } catch (Exception e) {
-            out.print(FAIL + "<BR>" + formatThrowable(e));
-        }
-        out.print("</td></tr>");
-    }
-
-    public String formatThrowable(Throwable err) {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        err.printStackTrace(new PrintStream(baos));
-        byte[] bytes = baos.toByteArray();
-        StringBuffer sb = new StringBuffer(bytes.length);
-        for (int i = 0; i < bytes.length; i++) {
-            char c = (char) bytes[i];
-            switch (c) {
-                case' ':
-                    sb.append("&nbsp;");
-                    break;
-                case'\n':
-                    sb.append("<br>");
-                    break;
-                case'\r':
-                    break;
-                default:
-                    sb.append(c);
-            }
-        }
-        return sb.toString();
-    }
-%>
-
diff --git a/tomee/tomee-webapp/src/main/webapp/testsuite.jsp b/tomee/tomee-webapp/src/main/webapp/testsuite.jsp
deleted file mode 100644
index 47d950d..0000000
--- a/tomee/tomee-webapp/src/main/webapp/testsuite.jsp
+++ /dev/null
@@ -1,201 +0,0 @@
-<% out.print("<!DOCTYPE html>"); %>
-<!--
-
-    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.
-
--->
-
-<!-- $Rev: 597221 $ $Date: 2007-11-21 22:51:05 +0100 (Wed, 21 Nov 2007) $ -->
-
-<%@ page import="
-javax.servlet.http.HttpServletRequest,
-javax.servlet.jsp.JspWriter,
-java.io.ByteArrayOutputStream,
-java.io.PrintStream
-"%>
-<%@ page import="org.apache.openejb.test.TestRunner" %>
-<html>
-<head>
-    <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <title>OpenEJB/Tomcat</title>
-    <link href="default.css" rel="stylesheet">
-</head>
-<body marginwidth="0" marginheight="0" leftmargin="0" bottommargin="0" topmargin="0" vlink="#6763a9" link="#6763a9" bgcolor="#ffffff">
-<a name="top"></a>
-<table width="712" cellspacing="0" cellpadding="0" border="0">
-    <tr>
-        <td bgcolor="#5A5CB8" align="left" valign="top" width="7"><img height="9" width="1" border="0" src="images/dotTrans.gif"></td>
-        <td bgcolor="#5A5CB8" align="left" valign="top" width="40"><img border="0" height="6" width="40" src="images/dotTrans.gif"></td>
-        <td bgcolor="#5A5CB8" align="left" valign="top" height="2" width="530"><img border="0" height="6" width="530" src="images/top_2.gif"></td>
-        <td bgcolor="#E24717" align="left" valign="top" height="2" width="120"><img src="images/top_3.gif" width="120" height="6" border="0"></td>
-    </tr>
-    <tr>
-        <td bgcolor="#5A5CB8" align="left" valign="top" bgcolor="#ffffff" width="13"><img border="0" height="15" width="13" src="images/dotTrans.gif"></td>
-        <td align="left" valign="top" width="40"><img border="0" height="1" width="1" src="images/dotTrans.gif"></td>
-        <td align="left" valign="middle" width="530"><a href="http://openejb.apache.org"><span class="menuTopOff">OpenEJB</span></a><img border="0" height="2" width="20" src="images/dotTrans.gif"><a href="index.jsp"><span class="menuTopOff">Index</span></a><img border="0" height="2" width="20" src="images/dotTrans.gif"><a href="viewjndi.jsp"><span class="menuTopOff">JNDI</span></a><img border="0" height="2" width="20" src="images/dotTrans.gif"><a href="viewejb.jsp"><span class="menuTopOff">EJB</span></a><img border="0" height="2" width="20" src="images/dotTrans.gif"><a href="viewclass.jsp"><span class="menuTopOff">Class</span></a><img border="0" height="2" width="20" src="images/dotTrans.gif"><a href="invokeobj.jsp"><span class="menuTopOff">Invoke</span></a><img border="0" height="2" width="20" src="images/dotTrans.gif"></td>
-        <td align="left" valign="top" height="20" width="120"><img border="0" height="2" width="10" src="images/dotTrans.gif"></td>
-    </tr>
-    <tr>
-        <td align="left" valign="top" bgcolor="#a9a5de" width="7"><img border="0" height="3" width="7" src="images/line_sm.gif"></td>
-        <td align="left" valign="top" height="3" width="40"><img border="0" height="3" width="40" src="images/line_light.gif"></td>
-        <td align="left" valign="top" height="3" width="530"><img border="0" height="3" width="530" src="images/line_light.gif"></td>
-        <td align="left" valign="top" height="3" width="120"><img height="1" width="1" border="0" src="images/dotTrans.gif"></td>
-    </tr>
-    <tr>
-        <td align="left" valign="top" bgcolor="#a9a5de" width="7">&nbsp;</td>
-        <td align="left" valign="top" width="40">&nbsp;</td>
-        <td valign="top" width="530" rowspan="4">
-            <table width="530" cellspacing="0" cellpadding="0" border="0" rows="2" cols="1">
-                <tr>
-                    <td align="left" valign="top"><br>
-                        <img width="200" vspace="0" src="images/logo_ejb2.gif" hspace="0" height="55" border="0">
-                        <br>
-                        <img src="images/dotTrans.gif" hspace="0" height="7" border="0"><br>
-                            <span class="pageTitle">
-                            OpenEJB Test Suite
-                            </span>
-                        <br>
-                        <img src="images/dotTrans.gif" hspace="0" height="1" border="0"></td>
-                </tr>
-            </table>
-            <p>
-            </p>
-            <FONT SIZE="2">
-                <%
-    try{
-        synchronized (this) {
-            main(request, session, out);
-        }
-    } catch (Exception e){
-        out.println("FAIL");
-        //throw e;
-        return;
-    }
-%>
-<BR><BR>
-<BR>
-</FONT>
-
-            </td>
-            <td align="left" valign="top" height="5" width="120">
-
-
-                &nbsp;</td>
-        </tr>
-    </table>
-    </body>
-</html>
-
-<%!
-    String tab = "&nbsp;&nbsp;&nbsp;&nbsp;";
-
-    static String invLock = "lock";
-    static int invCount;
-
-    HttpSession session;
-    HttpServletRequest request;
-    JspWriter out;
-
-    /**
-     * The main method of this JSP
-     */
-    public void main(HttpServletRequest request, HttpSession session, JspWriter out) throws Exception {
-        this.request = request;
-        this.session = session;
-        this.out = out;
-
-        String doInvoke = request.getParameter("invoke");
-        if (doInvoke != null) {
-            invoke();
-        } else {
-            out.print("<FORM NAME='invoke' METHOD='GET' ACTION='testsuite.jsp'>");
-            out.print("<INPUT type='SUBMIT' NAME='invoke' value='Invoke'>");
-            out.print("</FORM>");
-        }
-    }
-
-    String pepperImg = "<img src='images/pepper.gif' border='0'>";
-
-    public void invoke() throws Exception {
-
-        try {
-            System.setProperty("openejb.test.server", "org.apache.openejb.test.IvmTestServer");
-            System.setProperty("openejb.test.database", "org.apache.openejb.test.InstantDbTestDatabase");
-            //test.server.class=org.apache.openejb.test.IvmTestServer
-            //out.print("B");
-            //Object runner = this.getClass().forName("org.apache.openejb.test.TestRunner").newInstance();
-            //out.print("C");
-
-            //Method main = runner.getClass().getMethod("main",new Class[]{new String[]{}.getClass()});
-
-            String[] args = new String[]{"org.apache.openejb.test.ClientTestSuite"};
-            ByteArrayOutputStream baos = new ByteArrayOutputStream();
-            org.apache.openejb.test.ResultPrinter printer = new org.apache.openejb.test.ResultPrinter(new PrintStream(baos));
-            TestRunner runner = new TestRunner(printer);
-
-            runner.start(args);
-            byte[] bytes = baos.toByteArray();
-            StringBuffer sb = new StringBuffer(bytes.length);
-            for (int i = 0; i < bytes.length; i++) {
-                char c = (char) bytes[i];
-                switch (c) {
-                    case' ':
-                        sb.append("&nbsp;");
-                        break;
-                    case'\n':
-                        sb.append("<br>");
-                        break;
-                    case'\r':
-                        break;
-                    default:
-                        sb.append(c);
-                }
-            }
-            out.print(sb.toString());
-
-            //main.invoke(runner, args);
-
-
-        } catch (Throwable e) {
-            out.print("<br><b>Bad Exception:</b><br><br>");
-            out.print(formatThrowable(e));
-        }
-    }
-
-    public String formatThrowable(Throwable err) throws Exception {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        err.printStackTrace(new PrintStream(baos));
-        byte[] bytes = baos.toByteArray();
-        StringBuffer sb = new StringBuffer(bytes.length);
-        for (int i = 0; i < bytes.length; i++) {
-            char c = (char) bytes[i];
-            switch (c) {
-                case' ':
-                    sb.append("&nbsp;");
-                    break;
-                case'\n':
-                    sb.append("<br>");
-                    break;
-                case'\r':
-                    break;
-                default:
-                    sb.append(c);
-            }
-        }
-        return sb.toString();
-    }
-%>
-
diff --git a/tomee/tomee-webapp/src/main/webapp/viewclass.jsp b/tomee/tomee-webapp/src/main/webapp/viewclass.jsp
deleted file mode 100644
index 9063f6f..0000000
--- a/tomee/tomee-webapp/src/main/webapp/viewclass.jsp
+++ /dev/null
@@ -1,252 +0,0 @@
-<% out.print("<!DOCTYPE html>"); %>
-<!--
-
-    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.
-
--->
-
-<!-- $Rev: 597221 $ $Date: 2007-11-21 22:51:05 +0100 (Wed, 21 Nov 2007) $ -->
-
-<%@ page import="
-java.lang.reflect.Method,
-java.lang.reflect.Modifier,
-java.util.Map
-"%>
-<html>
-<head>
-    <meta charset="utf-8">
-    <title>TomEE</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="lib/bootstrap/2.1.1/css/bootstrap.css" rel="stylesheet">
-    <style type="text/css">
-        body {
-            padding-top: 60px;
-            padding-bottom: 40px;
-        }
-        .sidebar-nav {
-            padding: 9px 0;
-        }
-    </style>
-    <link href="lib/bootstrap/2.1.1/css/bootstrap-responsive.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
-    <![endif]-->
-</head>
-
-<body>
-<div class="navbar navbar-inverse navbar-fixed-top">
-    <div class="navbar-inner">
-        <div class="container-fluid">
-            <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-            </a>
-            <a class="brand" href="http://openejb.apache.org">TomEE</a>
-            <div class="nav-collapse">
-                <ul class="nav">
-                    <li><a href="index.jsp">Index</a></li>
-                    <li><a href="viewjndi.jsp">JNDI</a></li>
-                    <li><a href="viewejb.jsp">EJB</a></li>
-                    <li class="active"><a href="viewclass.jsp">Class</a></li>
-                    <li><a href="invokeobj.jsp">Invoke</a></li>
-                </ul>
-
-            </div><!--/.nav-collapse -->
-        </div>
-    </div>
-</div>
-
-
-<div class="container-fluid">
-    <div class="row-fluid">
-        <div class="span12">
-
-<%
-               
-     String className = request.getParameter("class");
-    try{
-       
-        if (className == null || className.trim().length() == 0) {
-%>
-<form class="well form-search" NAME='view' METHOD='GET' ACTION='viewclass.jsp'>
-    <input type="text" class="input-xlarge search-query" NAME='class' placeholder="Class name">
-    <button class="btn" type="submit"><i class="icon-search"></i> Search</button>
-</form>
-<%
-            out.print("<table class='table table-striped table-bordered table-condensed'><tbody>");
-            out.print("<tr><td>" + getClassRef("javax.ejb.EJBHome") + "</td></tr>");
-            out.print("<tr><td>" + getClassRef("javax.ejb.EJBObject") + "</td></tr>");
-            out.print("<tr><td>" + getClassRef("javax.ejb.EnterpriseBean") + "</td></tr>");
-            out.print("<tr><td>" + getClassRef("javax.ejb.SessionBean") + "</td></tr>");
-            out.print("<tr><td>" + getClassRef("javax.ejb.EntityBean") + "</td></tr>");
-            out.print("<tr><td>" + getClassRef("javax.servlet.http.HttpServlet") + "</td></tr>");
-            out.print("<tr><td>" + getClassRef("javax.servlet.http.HttpServletRequest") + "</td></tr>");
-            out.print("<tr><td>" + getClassRef("javax.servlet.http.HttpServletResponse") + "</td></tr>");
-            out.print("<tr><td>" + getClassRef("javax.servlet.http.HttpSession") + "</td></tr>");
-            out.print("<tr><td>" + getClassRef("javax.naming.InitialContext") + "</td></tr>");
-            out.print("<tr><td>" + getClassRef("javax.naming.Context") + "</td></tr>");
-            out.print("</tbody></table>");
-
-        } else {
-            Class clazz = (Class)session.getAttribute(className); 
-            if(clazz == null)
-            clazz = Class.forName(className);
-            printClass(clazz,out,session);
-        }
-    } catch (Exception e){
-        out.println("Could not find class "+className+" <br/>");
-        out.println("<a href='viewclass.jsp'>Back</a>");
-      //  throw e;
-        //return;
-    }
-%>
-
-
-        </div>
-    </div>
-    <hr>
-
-    <footer>
-        <p>Copyright &copy; 2012  The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
-    </footer>
-</div>
-
-<!-- Le javascript
-================================================== -->
-<!-- Placed at the end of the document so the pages load faster -->
-<script src="lib/jquery/jquery-1.7.2.min.js"></script>
-<script src="lib/bootstrap/2.1.1/js/bootstrap.js"></script>
-
-</body>
-</html>
-
-<%!
-
-    public void printClass(Class clazz, javax.servlet.jsp.JspWriter out, HttpSession session) throws Exception {
-        out.print("<h2>"+clazz.getName()+"</h2>");
-        Method[] methods = clazz.getDeclaredMethods();
-        out.print("<table class='table table-striped table-bordered table-condensed'><tbody>");
-        for (int i=0; i < methods.length; i++){
-            printMethod( methods[i], out );
-        }
-        out.print("</tbody></table>");
-
-        Class sup = clazz.getSuperclass();
-        if (sup != null) {
-            out.print("<h3>Extends:</h3>");
-            out.print("<p>" + getClassRef(sup,session) + "</p>");
-        }
-
-        Class[] intf = clazz.getInterfaces();
-        if (intf.length > 0) {
-            out.print("<h3>Implements:</h3>");
-            out.print("<table class='table table-striped table-bordered table-condensed'><tbody>");
-            for (int i=0; i < intf.length; i++){
-                out.print("<tr><td>" + getClassRef(intf[i],session) + "</td></tr>");
-            }
-            out.print("</tbody></table>");
-        }
-    }
-
-    public void printMethod(Method m, javax.servlet.jsp.JspWriter out) throws Exception {
-        out.print("<tr><td>");
-        out.print(" "+getModifier(m));
-        
-        out.print(" "+getShortClassRef(m.getReturnType())+"&nbsp;&nbsp;");
-
-        out.print(""+m.getName()+"&nbsp;");
-        Class[] params = m.getParameterTypes();
-        out.print("<font color='gray'>(</font>");
-        for (int j=0; j < params.length; j++){
-            out.print(getShortClassRef(params[j]));
-            if (j != params.length-1) {
-                out.print(",&nbsp;");
-            }
-        }
-        out.print("<font color='gray'>)</font>");
-
-        Class[] excp = m.getExceptionTypes();
-        if (excp.length > 0) {
-            out.print(" <font color='gray'>throws</font>&nbsp;&nbsp;");
-            for (int j=0; j < excp.length; j++){
-                out.print(getShortClassRef(excp[j]));
-                if (j != excp.length-1) {
-                    out.print(",&nbsp;");
-                }
-            }
-        }
-        out.print("</td></tr>");
-    }
-    public String getModifier(Method m) throws Exception {
-        int mod = m.getModifiers();
-
-        if (Modifier.isPublic(mod)) {
-            return "public";
-
-        } else if (Modifier.isPrivate(mod)) {
-            return "private";
-
-        } else if (Modifier.isProtected(mod)) {
-            return "protected";
-
-        } else {
-            return "";
-        }
-    }
-
-/*    public String getClassRef(Class clazz) throws Exception {
-            String name = clazz.getName();
-            return "<a href='viewclass.jsp?class="+name+"'>"+name+"</a>";
-    }
-  */    
-    public String getClassRef(String name) throws Exception {
-            return "<a href='viewclass.jsp?class=" +name + "'>" + name + "</a>";
-    }
-
-   public String getClassRef(Class clazz, HttpSession session) throws Exception {
-        String name = clazz.getName();
-        session.setAttribute(name,clazz);
-        return getClassRef(name);
-    }
-
-    public String getShortClassRef(Class clazz) throws Exception {
-        if (clazz.isPrimitive()) {
-            return "<font color='gray'>"+clazz.getName()+"</font>";
-        } else if (clazz.isArray() && clazz.getComponentType().isPrimitive()) {
-            return "<font color='gray'>"+clazz.getComponentType()+"[]</font>";
-        } else if (clazz.isArray()) {
-            String name = clazz.getComponentType().getName();
-            int dot = name.lastIndexOf(".")+1;
-            String shortName = name.substring(dot,name.length());
-            return "<a href='viewclass.jsp?class="+name+"'>"+shortName+"[]</a>";
-        } else {
-            String name = clazz.getName();
-            int dot = name.lastIndexOf(".")+1;
-            String shortName = name.substring(dot,name.length());
-            return "<a href='viewclass.jsp?class="+name+"'>"+shortName+"</a>";
-        }
-    }
-
-
-%>
-
diff --git a/tomee/tomee-webapp/src/main/webapp/viewconsole.jsp b/tomee/tomee-webapp/src/main/webapp/viewconsole.jsp
deleted file mode 100644
index e18892f..0000000
--- a/tomee/tomee-webapp/src/main/webapp/viewconsole.jsp
+++ /dev/null
@@ -1,146 +0,0 @@
-<% out.print("<!DOCTYPE html>"); %>
-<!--
-
-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.
-
--->
-
-<!-- $Rev: 597221 $ $Date: 2007-11-21 22:51:05 +0100 (Wed, 21 Nov 2007) $ -->
-
-<html>
-<head>
-    <meta charset="utf-8">
-    <title>TomEE</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="default.css" rel="stylesheet">
-    <link href="lib/bootstrap/2.1.1/css/bootstrap.css" rel="stylesheet">
-    <style type="text/css">
-        body {
-            padding-top: 60px;
-            padding-bottom: 40px;
-        }
-
-        .sidebar-nav {
-            padding: 9px 0;
-        }
-    </style>
-    <link href="lib/bootstrap/2.1.1/css/bootstrap-responsive.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
-    <![endif]-->
-</head>
-
-<body>
-
-<div class="navbar navbar-inverse navbar-fixed-top">
-    <div class="navbar-inner">
-        <div class="container-fluid">
-            <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-            </a>
-            <a class="brand" href="http://openejb.apache.org">TomEE</a>
-
-            <div class="nav-collapse">
-                <ul class="nav">
-                    <li><a href="index.jsp">Index</a></li>
-                    <li><a href="viewjndi.jsp">JNDI</a></li>
-                    <li><a href="viewejb.jsp">EJB</a></li>
-                    <li><a href="viewclass.jsp">Class</a></li>
-                    <li><a href="invokeobj.jsp">Invoke</a></li>
-                    <li class="active"><a href="viewconsole.jsp.jsp">Console</a></li>
-                </ul>
-
-            </div>
-            <!--/.nav-collapse -->
-        </div>
-    </div>
-</div>
-
-<div class="container-fluid">
-    <div class="row-fluid">
-        <div class="span12">
-            <p>
-                <textarea id='scriptCodeTXT' class="span8 input-xlarge" id="textarea" rows="25">
-                </textarea><BR>
-                <a class="btn btn-primary" href="#" onclick="TOMEE.executeScript();">Run</a>
-            </p>
-
-        </div>
-    </div>
-
-    <div id="resultsDIV" class="row-fluid"></div>
-
-    <hr>
-
-    <footer>
-        <p>Copyright &copy; 2012 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache
-            and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
-    </footer>
-</div>
-<!-- /container -->
-
-
-<!-- Le javascript
-================================================== -->
-<!-- Placed at the end of the document so the pages load faster -->
-<script src="lib/jquery/jquery-1.7.2.min.js"></script>
-<script src="lib/bootstrap/2.1.1/js/bootstrap.js"></script>
-
-<script type="text/javascript">
-    var TOMEE = (function () {
-
-        var executeScript = function () {
-
-            var request = $.ajax({
-                type: 'POST',
-                dataType: 'text',
-                data: {
-                    'scriptCode': $('#scriptCodeTXT').val()
-                },
-                url: '/tomee/ws/console',
-                success: function (data) {
-                    var value = data;
-                    if(!value || value === '') {
-                        value = 'done'
-                    }
-                    var el = $('<div class="well"><p>' + data + '</p></div>');
-                    $('#resultsDIV').prepend(el);
-                },
-                error: function (data) {
-                    var bodyHtml = /<body.*?>([\s\S]*)<\/body>/.exec(data.responseText)[1];
-                    var el = $('<div class="well"><p>' + bodyHtml + '</p></div>');
-                    $('#resultsDIV').prepend(el);
-                }
-            });
-        };
-
-        return {
-            executeScript: executeScript
-        }
-    })();
-</script>
-
-</body>
-</html>
-
diff --git a/tomee/tomee-webapp/src/main/webapp/viewejb.jsp b/tomee/tomee-webapp/src/main/webapp/viewejb.jsp
deleted file mode 100644
index ded1161..0000000
--- a/tomee/tomee-webapp/src/main/webapp/viewejb.jsp
+++ /dev/null
@@ -1,249 +0,0 @@
-<% out.print("<!DOCTYPE html>"); %>
-<!--
-
-    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.
-
--->
-
-<!-- $Rev: 597221 $ $Date: 2007-11-21 22:51:05 +0100 (Wed, 21 Nov 2007) $ -->
-
-<%@ page import="
-org.apache.openejb.BeanType,
-org.apache.openejb.BeanContext,
-org.apache.openejb.loader.SystemInstance,
-org.apache.openejb.spi.ContainerSystem,
-javax.naming.Context,
-javax.naming.InitialContext
-"%>
-<%@ page import="javax.servlet.http.HttpServletRequest" %>
-<%@ page import="javax.servlet.http.HttpSession" %>
-<%@ page import="java.io.IOException" %>
-<%@ page import="java.util.HashMap" %>
-<%@ page import="java.util.Map" %>
-<%@ page import="java.util.List" %>
-<%@ page import="java.util.Properties" %>
-<%@ page import="java.lang.reflect.Field" %>
-<%@ page import="java.lang.reflect.Method" %>
-<html>
-
-
-<head>
-    <meta charset="utf-8">
-    <title>TomEE</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="lib/bootstrap/2.1.1/css/bootstrap.css" rel="stylesheet">
-    <style type="text/css">
-        body {
-            padding-top: 60px;
-            padding-bottom: 40px;
-        }
-        .sidebar-nav {
-            padding: 9px 0;
-        }
-    </style>
-    <link href="lib/bootstrap/2.1.1/css/bootstrap-responsive.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
-    <![endif]-->
-</head>
-
-<body>
-
-<div class="navbar navbar-inverse navbar-fixed-top">
-    <div class="navbar-inner">
-        <div class="container-fluid">
-            <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-            </a>
-            <a class="brand" href="http://openejb.apache.org">TomEE</a>
-            <div class="nav-collapse">
-                <ul class="nav">
-                    <li><a href="index.jsp">Index</a></li>
-                    <li><a href="viewjndi.jsp">JNDI</a></li>
-                    <li class="active"><a href="viewejb.jsp">EJB</a></li>
-                    <li><a href="viewclass.jsp">Class</a></li>
-                    <li><a href="invokeobj.jsp">Invoke</a></li>
-                </ul>
-
-            </div><!--/.nav-collapse -->
-        </div>
-    </div>
-</div>
-
-    <div class="container-fluid">
-        <div class="row-fluid">
-            <div class="span12">
-    <%
-        try{
-            String ejb = request.getParameter("ejb");
-            String jndiName = request.getParameter("jndiName");
-            String contextID = request.getParameter("ctxID");
-            if (ejb == null) {
-                out.print("<p>No EJB specified</p>");
-            } else {
-                printEjb(ejb,jndiName,contextID,out, session);
-
-            }
-        } catch (Exception e){
-
-            out.println("<p>FAIL: <br>");
-            out.print(e.getMessage() + "</p>");
-            throw e;
-            //return;
-        }
-    %>
-            </div>
-        </div>
-
-        <hr>
-
-        <footer>
-            <p>Copyright &copy; 2012  The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
-        </footer>
-    </div> <!-- /container -->
-
-
-<!-- Le javascript
-================================================== -->
-<!-- Placed at the end of the document so the pages load faster -->
-<script src="lib/jquery/jquery-1.7.2.min.js"></script>
-<script src="lib/bootstrap/2.1.1/js/bootstrap.js"></script>
-
-</body>
-</html>
-
-<%!
-    private BeanContext getDeployment(String deploymentID) {
-        try {
-            ContainerSystem containerSystem = SystemInstance.get().getComponent(ContainerSystem.class);
-            BeanContext ejb = containerSystem.getBeanContext(deploymentID);
-            return ejb;
-        } catch (Exception e) {
-            return null;
-        }
-    }
-
-    public void printEjb(String name,String jndiName, String contextID, javax.servlet.jsp.JspWriter out, HttpSession session) throws Exception {
-        String id = (name.startsWith("/")) ? name.substring(1, name.length()) : name;
-        BeanContext ejb = getDeployment(id);
-
-        if (ejb == null) {
-            out.print("<p>No such EJB: " + id + "</p>");
-            return;
-        }
-        String type = null;
-
-        switch (ejb.getComponentType()) {
-            case CMP_ENTITY:
-                type = "EntityBean with Container-Managed Persistence";
-                break;
-            case BMP_ENTITY:
-                type = "EntityBean with Bean-Managed Persistence";
-                break;
-            case STATEFUL:
-                type = "Stateful SessionBean";
-                break;
-            case STATELESS:
-                type = "Stateless SessionBean";
-                break;
-            case SINGLETON:
-                type = "Singleton SessionBean";
-                break;
-            case MANAGED:
-                type = "Managed SessionBean";
-                break;
-            default:
-                type = "Unkown Bean Type";
-                break;
-        }
-        out.print("<h2>" + type + "</h2>");
-        out.print("<table class=\"table table-striped table-bordered\"><tbody>");
-        printRow("JNDI Name", jndiName, out);
-        if(ejb.getRemoteInterface() != null)
-        printRow("Remote Interface", getClassRef(ejb.getRemoteInterface(),session), out);
-        if(ejb.getHomeInterface() != null)
-        printRow("Home Interface", getClassRef(ejb.getHomeInterface(),session), out);
-        if(ejb.getBeanClass() != null)
-        printRow("Bean Class", getClassRef(ejb.getBeanClass(),session), out);
-        if(ejb.getBusinessLocalInterfaces().size() > 0)
-        printRow("Business Local Interfaces", getClassRefs(ejb.getBusinessLocalInterfaces(),session), out);
-        if(ejb.getBusinessRemoteInterfaces().size() > 0)
-        printRow("Business Remote Interfaces", getClassRefs(ejb.getBusinessRemoteInterfaces(),session), out);        
-        if (ejb.getComponentType() == BeanType.BMP_ENTITY || ejb.getComponentType() == BeanType.CMP_ENTITY) {
-            printRow("Primary Key", getClassRef(ejb.getPrimaryKeyClass(),session), out);
-        }
-        out.print("</tbody></table>");
-
-        // Browse JNDI with this ejb
-        //javax.servlet.http.HttpSession session = this.session;
-        //noinspection unchecked
-        Map<String, Object> objects = (Map<String, Object>) session.getAttribute("objects");
-
-        Context ctx;
-        if(contextID == null){
-        Properties p = new Properties();
-
-        p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
-        p.put("openejb.loader", "embed");
-
-        ctx = new InitialContext(p);
-        }else{
-          ctx = (Context)session.getAttribute(contextID);
-        }
-        Object obj = ctx.lookup(jndiName);
- //       String objID = ejb.getHomeInterface().getName() + "@" + obj.hashCode(); 
-        String objID = ""+obj.hashCode(); //TODO: Not the best of the ID's, more meaningful ID would be better. Right now hashcode would suffice
-        objects.put(objID, obj);
-        String invokeURL = "<a class='btn' href='invokeobj.jsp?obj=" + objID + "'>Invoke this EJB</a>";
-
-        Context enc = ejb.getJndiEnc();
-        String ctxID = "enc" + enc.hashCode();
-        session.setAttribute(ctxID, enc);
-        String jndiURL = "<a class='btn' href='viewjndi.jsp?ctxID=" + ctxID + "'>Browse this EJB's private JNDI namespace</a>";
-
-        out.print("<div class='btn-group'>" + invokeURL + jndiURL + "</div>");
-    }
-
-    protected void printRow(String col1, String col2, javax.servlet.jsp.JspWriter out) throws IOException {
-        out.print("<tr>");
-        out.print("<td>" + col1 + "</td>");
-        out.print("<td>" + col2 + "</td>");
-        out.print("</tr>");
-    }
-
-    public String getClassRef(Class clazz, HttpSession session) throws Exception {
-        String name = clazz.getName();
-        session.setAttribute(name,clazz);
-        return "<a href='viewclass.jsp?class=" + name + "'>" + name + "</a>";
-    }
-
-    public String getClassRefs(List<Class> classes, HttpSession session) throws Exception{
-        String refs = "";
-        for(Class clazz: classes){
-           refs += getClassRef(clazz,session)+"<br/>";
-        }
-        return refs;
-    }
-%>
-
diff --git a/tomee/tomee-webapp/src/main/webapp/viewjndi.jsp b/tomee/tomee-webapp/src/main/webapp/viewjndi.jsp
deleted file mode 100644
index aa45c54..0000000
--- a/tomee/tomee-webapp/src/main/webapp/viewjndi.jsp
+++ /dev/null
@@ -1,318 +0,0 @@
-<% out.print("<!DOCTYPE html>"); %>
-<!--
-
-    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.
-
--->
-
-<!-- $Rev: 597221 $ $Date: 2007-11-21 22:51:05 +0100 (Wed, 21 Nov 2007) $ -->
-
-<%@ page import="
-javax.naming.Context,
-javax.naming.InitialContext,
-javax.naming.NameClassPair,
-javax.naming.NamingEnumeration,
-java.util.Properties
-"%>
-<%@ page import="javax.naming.NamingException" %>
-<%@ page import="java.lang.reflect.Method" %>
-<%@ page import="java.lang.reflect.Field" %>
-<%@ page import="org.apache.openejb.util.proxy.LocalBeanProxyFactory" %>
-<html>
-<head>
-    <meta charset="utf-8">
-    <title>TomEE</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <!-- Le styles -->
-    <link href="lib/bootstrap/2.1.1/css/bootstrap.css" rel="stylesheet">
-    <style type="text/css">
-        body {
-            padding-top: 60px;
-            padding-bottom: 40px;
-        }
-
-        .sidebar-nav {
-            padding: 9px 0;
-        }
-    </style>
-    <link href="lib/bootstrap/2.1.1/css/bootstrap-responsive.css" rel="stylesheet">
-
-    <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
-    <!--[if lt IE 9]>
-    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
-    <![endif]-->
-</head>
-
-
-<body>
-<div class="navbar navbar-inverse navbar-fixed-top">
-    <div class="navbar-inner">
-        <div class="container-fluid">
-            <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-            </a>
-            <a class="brand" href="http://openejb.apache.org">TomEE</a>
-
-            <div class="nav-collapse">
-                <ul class="nav">
-                    <li><a href="index.jsp">Index</a></li>
-                    <li class="active"><a href="viewjndi.jsp">JNDI</a></li>
-                    <li><a href="viewejb.jsp">EJB</a></li>
-                    <li><a href="viewclass.jsp">Class</a></li>
-                    <li><a href="invokeobj.jsp">Invoke</a></li>
-                </ul>
-
-            </div>
-            <!--/.nav-collapse -->
-        </div>
-    </div>
-</div>
-
-
-<div class="container-fluid">
-    <div class="row-fluid">
-        <div class="span12">
-            <%
-            try{
-                String selected = request.getParameter("selected");
-                if (selected == null) {
-                    selected = "";
-                }
-
-                ctxID = request.getParameter("ctxID");
-                ctx = null;
-
-                if (ctxID == null) {
-                    Properties p = new Properties();
-                    p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
-                    p.put("openejb.loader", "embed");
-                    try {
-                        ctx = new InitialContext( p );
-                        out.print("<h2>OpenEJB Global JNDI Namespace</h2>");
-                    } catch(Exception e) {
-                        out.print("<h2>OpenEJB Not Installed</h2>");
-                    }
-                } else {
-                    ctx = (Context)session.getAttribute(ctxID);
-                    if (ctxID.startsWith("enc")) {
-        %>
-        <h2>JNDI Environment Naming Context <a href="#" rel="tooltip" title="This is the private namespace of an Enterprise JavaBean">(ENC)</a></h2>
-        <%
-                    }
-                }
-
-                if (ctx != null) {
-                    Node root = new RootNode();
-                    buildNode(root,ctx);
-                    out.println("<p>");
-                    printNodes(root, out, "",selected);
-                    out.println("</p>");
-                }
-            } catch (Exception e) {
-                out.println("<p>FAIL</p>");
-                throw e;
-                //return;
-            }
-        %>
-            </div>
-        </div>
-
-        <hr>
-
-        <footer>
-            <p>Copyright &copy; 2012  The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
-        </footer>
-    </div> <!-- /container -->
-
-
-<!-- Le javascript
-================================================== -->
-<!-- Placed at the end of the document so the pages load faster -->
-<script src="lib/jquery/jquery-1.7.2.min.js"></script>
-<script src="lib/bootstrap/2.1.1/js/bootstrap.js"></script>
-
-</body>
-</html>
-
-
-<%!
-    String ctxID;
-    Context ctx;
-
-    class Node {
-        static final int CONTEXT = 1;
-        static final int BEAN = 2;
-        static final int OTHER = 3;
-        Node parent;
-        Node[] children = new Node[0];
-        String name;
-        int type = 0;
-		// returns the JNDI name
-        public String getID() {
-            if (parent instanceof RootNode) {
-                return name;
-            } else {
-                return parent.getID() + "/" + name;
-            }
-        }
-
-        public String getName() {
-            return name;
-        }
-
-        public int getType() {
-            return type;
-        }
-
-        public void addChild(Node child) {
-            int len = children.length;
-            Node[] newChildren = new Node[len + 1];
-            System.arraycopy(children, 0, newChildren, 0, len);
-            newChildren[len] = child;
-            children = newChildren;
-            child.parent = this;
-        }
-    }
-
-    class RootNode extends Node {
-        public String getID() {
-            return "";
-        }
-
-        public String getName() {
-            return "";
-        }
-
-        public int getType() {
-            return Node.CONTEXT;
-        }
-    }
-
-    public void buildNode(Node parent, Context ctx) throws Exception {
-        NamingEnumeration namingEnumeration = ctx.list("");
-        while (namingEnumeration.hasMoreElements()) {
-            NameClassPair pair = (NameClassPair) namingEnumeration.next();
-            Node node = new Node();
-            parent.addChild(node);
-            node.name = pair.getName();
-
-            Object obj = lookup(ctx, node.getName());
-            if (obj instanceof Context) {
-                node.type = Node.CONTEXT;
-                buildNode(node, (Context) obj);
-            } else if (obj instanceof java.rmi.Remote
-                || obj instanceof org.apache.openejb.core.ivm.IntraVmProxy
-                || (obj != null && LocalBeanProxyFactory.isProxy(obj.getClass()))) {
-                node.type = Node.BEAN;
-            } else {
-                node.type = Node.OTHER;
-            }
-        }
-    }
-
-    String openImg = "<img src='images/TreeOpen.gif' border='0'>";
-    String closedImg = "<img src='images/TreeClosed.gif' border='0'>";
-    String ejbImg = "<img src='images/ejb.gif' border='0'>";
-    String javaImg = "<img src='images/JavaCup.gif' border='0'>";
-
-
-    public void printNodes(Node node, javax.servlet.jsp.JspWriter out, String tabs, String selected) throws Exception {
-        switch (node.getType()) {
-            case Node.CONTEXT:
-                printContextNode(node, out, tabs, selected);
-                break;
-            case Node.BEAN:
-                printBeanNode(node, out, tabs);
-                break;
-            default:
-                printOtherNode(node, out, tabs);
-                break;
-        }
-
-    }
-
-    public void printContextNode(Node node, javax.servlet.jsp.JspWriter out, String tabs, String selected) throws Exception {
-        String id = node.getID();
-        if (selected.startsWith(id)) {
-            if (ctxID != null) {
-                out.print(tabs + "<a href='viewjndi.jsp?ctxID=" + ctxID + "&selected=" + id + "'>" + openImg + "&nbsp;&nbsp;" + node.getName() + "</a><br>");
-            } else {
-                out.print(tabs + "<a href='viewjndi.jsp?selected=" + id + "'>" + openImg + "&nbsp;&nbsp;" + node.getName() + "</a><br>");
-            }
-            for (int i = 0; i < node.children.length; i++) {
-                Node child = node.children[i];
-                printNodes(child, out, tabs + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;", selected);
-            }
-        } else {
-            if (ctxID != null) {
-                out.print(tabs + "<a href='viewjndi.jsp?ctxID=" + ctxID + "&selected=" + id + "'>" + closedImg + "&nbsp;&nbsp;" + node.getName() + "</a><br>");
-            } else {
-                out.print(tabs + "<a href='viewjndi.jsp?selected=" + id + "'>" + closedImg + "&nbsp;&nbsp;" + node.getName() + "</a><br>");
-            }
-        }
-    }
-
-    public void printBeanNode(Node node, javax.servlet.jsp.JspWriter out, String tabs) throws Exception {
-        String id = node.getID();
-        if (ctxID != null && ctxID.startsWith("enc")) {
-            // HACK!
-            try {
-                Object ejb = lookup(ctx, id);
-                Object deploymentID = getDeploymentId(ejb);
-                out.print(tabs + "<a href='viewejb.jsp?ejb=" + deploymentID +"&jndiName="+id +"&ctxID="+ctxID+"'>" + ejbImg + "&nbsp;&nbsp;" + node.getName() + "</a><br>");
-            } catch (Exception e) {
-                out.print(tabs + ejbImg + "&nbsp;&nbsp;" + node.getName() + "<br>");
-            }
-        } else {
-            try {
-                Object ejb = lookup(ctx, id);
-                Object deploymentID = getDeploymentId(ejb);
-                out.print(tabs + "<a href='viewejb.jsp?ejb=" + deploymentID +"&jndiName="+id +"'>" + ejbImg + "&nbsp;&nbsp;" + node.getName() + "</a><br>");
-            } catch (Exception e) {
-                out.print(tabs + ejbImg + "&nbsp;&nbsp;" + node.getName() + "<br>");
-            }
-        }
-    }
-
-    public void printOtherNode(Node node, javax.servlet.jsp.JspWriter out, String tabs) throws Exception {
-        String id = node.getID();
-        Object obj = lookup(ctx, id);
-        String clazz = obj.getClass().getName();
-        out.print(tabs + "<a href='viewclass.jsp?class=" + clazz + "'>" + javaImg + "&nbsp;&nbsp;" + node.getName() + "</a><br>");
-    }
-
-    private Object getDeploymentId(Object ejb) throws Exception {
-        org.apache.openejb.core.ivm.BaseEjbProxyHandler handler = (org.apache.openejb.core.ivm.BaseEjbProxyHandler)org.apache.openejb.util.proxy.ProxyManager.getInvocationHandler(ejb);
-        return handler.deploymentID;
-        
-    }
-
-    private Object lookup(Context ctx, String name) throws NamingException {
-        try {
-            Object obj = ctx.lookup(name);
-            return obj;
-        } catch (Exception e) {
-            return "ERROR: " + e.getMessage();
-        }
-    }
-
-%>
-
diff --git a/tomee/tomee-webapp/src/test/conf/tomcat-users.xml b/tomee/tomee-webapp/src/test/conf/tomcat-users.xml
index 261477e..20a4f08 100644
--- a/tomee/tomee-webapp/src/test/conf/tomcat-users.xml
+++ b/tomee/tomee-webapp/src/test/conf/tomcat-users.xml
@@ -19,8 +19,11 @@
 -->

 

 <!-- $Rev: 597221 $ $Date: 2007-11-21 22:51:05 +0100 (Wed, 21 Nov 2007) $ -->

-
-<tomcat-users>
-    <user name="admin" password="admin" roles="manager,user" />
-    <user name="jane" password="doe" roles="user" />
-</tomcat-users>
+

+<tomcat-users>

+    <role rolename="manager"/>

+    <role rolename="user"/>

+    <role rolename="tomee-admin"/>

+    <user name="admin" password="admin" roles="manager,user,tomee-admin" />

+    <user name="jane" password="doe" roles="user" />

+</tomcat-users>

diff --git a/tomee/tomee-webservices/pom.xml b/tomee/tomee-webservices/pom.xml
index a33f369..18f4989 100644
--- a/tomee/tomee-webservices/pom.xml
+++ b/tomee/tomee-webservices/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>1.5.1-SNAPSHOT</version>
+    <version>1.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>tomee-webservices</artifactId>
diff --git a/utils/openejb-core-hibernate/pom.xml b/utils/openejb-core-hibernate/pom.xml
index 2e985e2..0ab49f9 100644
--- a/utils/openejb-core-hibernate/pom.xml
+++ b/utils/openejb-core-hibernate/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>utils</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/utils/openejb-mockito/pom.xml b/utils/openejb-mockito/pom.xml
index 592e687..c8e88cb 100644
--- a/utils/openejb-mockito/pom.xml
+++ b/utils/openejb-mockito/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>utils</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/utils/openejb-provisionning/pom.xml b/utils/openejb-provisionning/pom.xml
index b93e4f2..d923eb9 100644
--- a/utils/openejb-provisionning/pom.xml
+++ b/utils/openejb-provisionning/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>utils</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/utils/pom.xml b/utils/pom.xml
index c9a2f1c..d421271 100644
--- a/utils/pom.xml
+++ b/utils/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>openejb</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>utils</artifactId>
diff --git a/utils/webdeployer/pom.xml b/utils/webdeployer/pom.xml
index c0a86fd..10f5ef8 100644
--- a/utils/webdeployer/pom.xml
+++ b/utils/webdeployer/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>utils</artifactId>
     <groupId>org.apache.openejb</groupId>
-    <version>4.5.1-SNAPSHOT</version>
+    <version>4.5.1</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>