diff --git a/bigbluebutton-web/.classpath b/bigbluebutton-web/.classpath
index a413207646ba6547d7f7439cf97f9a8535fcb4aa..1778a370d14de5c2e0fd290d545cd10496409c24 100644
--- a/bigbluebutton-web/.classpath
+++ b/bigbluebutton-web/.classpath
@@ -1,96 +1,95 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="src" path="src/java"/>
-	<classpathentry kind="src" path="src/groovy"/>
-	<classpathentry kind="src" path="grails-app/conf"/>
-	<classpathentry kind="src" path="grails-app/controllers"/>
-	<classpathentry kind="src" path="grails-app/domain"/>
-	<classpathentry kind="src" path="grails-app/services"/>
-	<classpathentry kind="src" path="grails-app/taglib"/>
-	<classpathentry kind="src" path="test/integration"/>
-	<classpathentry kind="src" path="test/unit"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="lib" path="lib/asterisk-java-0.3.1.jar"/>
-	<classpathentry kind="lib" path="lib/groovy-all-1.5.4.jar"/>
-	<classpathentry kind="lib" path="lib/mysql-connector-java-5.1.6-bin.jar"/>
-	<classpathentry kind="lib" path="lib/commons-httpclient.jar"/>
-	<classpathentry kind="lib" path="lib/commons-codec-1.3.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/ant/lib/ant.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/ant-junit.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/ant-launcher.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/ant-nodeps.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/ant-trax.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/ant.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/antlr-2.7.6.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/backport-util-concurrent-3.0.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/cglib-nodep-2.1_3.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/commons-beanutils-1.7.0.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/commons-cli-1.0.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/commons-codec-1.3.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/commons-collections-3.2.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/commons-dbcp-1.2.1.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/commons-el-1.0.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/commons-fileupload-1.1.1.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/commons-io-1.4.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/commons-lang-2.1.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/commons-logging-1.1.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/commons-pool-1.2.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/commons-validator-1.3.0.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/dom4j-1.6.1.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/ehcache-1.5.0.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/ejb3-persistence.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/groovy-all-1.5.6.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/hibernate-annotations.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/hibernate-commons-annotations.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/hibernate3.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/hsqldb-1.8.0.5.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/jasper-compiler-5.5.15.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/jasper-compiler-jdt-5.5.15.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/jasper-runtime-5.5.15.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/jaxen-1.1-beta-11.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/jdbc2_0-stdext.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-6.1.12.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-naming-6.1.12.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-plus-6.1.12.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-util-6.1.12.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/jline-0.9.91.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/jsp-api-2.0.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/jsr107cache-1.0.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/jstl-2.3.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/jstl-2.4.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/jta.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/junit-3.8.2.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/log4j-1.2.15.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/ognl-2.6.9.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/oro-2.0.8.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/oscache-2.4.1.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/serializer.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/servlet-api-2.5-6.1.4.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/sitemesh-2.3.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/spring-2.5.6.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/spring-binding-2.0-m1.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/spring-test.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/spring-webflow-2.0-m1.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/spring-webmvc.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/standard-2.3.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/standard-2.4.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/start.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/svnkit-1.2.0.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/xalan.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/xercesImpl.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/xpp3_min-1.1.3.4.O.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/lib/xstream-1.2.1.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/dist/grails-cli-1.0.4.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/dist/grails-core-1.0.4.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/dist/grails-crud-1.0.4.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/dist/grails-gorm-1.0.4.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/dist/grails-spring-1.0.4.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/dist/grails-test-1.0.4.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/dist/grails-web-1.0.4.jar"/>
-	<classpathentry kind="var" path="GRAILS_HOME/dist/grails-webflow-1.0.4.jar"/>
-	<classpathentry kind="lib" path="plugins/jsecurity-0.3/lib/jsecurity-jdk14.jar"/>
-	<classpathentry kind="lib" path="lib/activemq-core-5.1.0.jar"/>
-	<classpathentry kind="lib" path="lib/geronimo-j2ee-management_1.0_spec-1.0.jar"/>
-	<classpathentry kind="lib" path="lib/geronimo-jms_1.1_spec-1.0.jar"/>
-	<classpathentry kind="output" path="web-app/WEB-INF/classes"/>
+<classpathentry kind="src" path="src/java"/>
+<classpathentry kind="src" path="src/groovy"/>
+<classpathentry kind="src" path="grails-app/conf"/>
+<classpathentry kind="src" path="grails-app/controllers"/>
+<classpathentry kind="src" path="grails-app/domain"/>
+<classpathentry kind="src" path="grails-app/services"/>
+<classpathentry kind="src" path="grails-app/taglib"/>
+<classpathentry kind="src" path="test/integration"/>
+<classpathentry kind="src" path="test/unit"/>
+<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+<classpathentry kind="lib" path="lib/asterisk-java-0.3.1.jar"/>
+<classpathentry kind="lib" path="lib/groovy-all-1.5.4.jar"/>
+<classpathentry kind="lib" path="lib/mysql-connector-java-5.1.6-bin.jar"/>
+<classpathentry kind="lib" path="lib/commons-httpclient.jar"/>
+<classpathentry kind="lib" path="lib/commons-codec-1.3.jar"/>
+<classpathentry kind="lib" path="plugins/jsecurity-0.3/lib/jsecurity-jdk14.jar"/>
+<classpathentry kind="lib" path="lib/activemq-core-5.1.0.jar"/>
+<classpathentry kind="lib" path="lib/geronimo-j2ee-management_1.0_spec-1.0.jar"/>
+<classpathentry kind="lib" path="lib/geronimo-jms_1.1_spec-1.0.jar"/>
+<classpathentry kind="output" path="web-app/WEB-INF/classes"/>
+<classpathentry kind="var" path="GRAILS_HOME/ant/lib/ant.jar"/>
+<classpathentry kind="var" path="GRAILS_HOME/lib/commons-pool-1.2.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/xpp3_min-1.1.3.4.O.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/spring-webmvc-2.5.6.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/sitemesh-2.4.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/ehcache-1.5.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/commons-beanutils-1.7.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/servlet-api-2.5-6.1.14.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-6.1.14.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/slf4j-log4j12-1.5.6.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/org.springframework.webflow-2.0.3.RELEASE.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/commons-cli-1.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/standard-2.4.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/commons-codec-1.3.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/serializer.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/commons-lang-2.4.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/ant-nodeps-1.7.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/commons-validator-1.3.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/spring-test-2.5.6.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/backport-util-concurrent-3.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/svnkit-1.2.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/slf4j-api-1.5.6.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/commons-io-1.4.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/junit-3.8.2.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/ant-launcher-1.7.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/spring-2.5.6.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jstl-2.3.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/org.springframework.js-2.0.3.RELEASE.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/ant-1.7.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/gant_groovy1.6-1.6.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/ant-trax.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/ognl-2.6.9.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-util-6.1.14.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jline-0.9.91.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jasper-compiler-jdt-5.5.15.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/hsqldb-1.8.0.5.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/antlr-2.7.6.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/org.springframework.binding-2.0.3.RELEASE.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jasper-compiler-5.5.15.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/log4j-1.2.15.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/commons-dbcp-1.2.1.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/oro-2.0.8.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jstl-2.4.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/commons-collections-3.2.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jsr107cache-1.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jsp-api-2.1.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-naming-6.1.14.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/ivy-2.0.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jasper-runtime-5.5.15.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/start.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/ejb3-persistence-3.3.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-plus-6.1.14.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/commons-el-1.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/cglib-nodep-2.1_3.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jsp-api-2.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/commons-fileupload-1.2.1.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/oscache-2.4.1.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/standard-2.3.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/groovy-all-1.6.3.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/ant-junit-1.7.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jta-1.1.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jcl-over-slf4j-1.5.6.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/dist/grails-gorm-1.1.1.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/dist/grails-scripts-1.1.1.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/dist/grails-webflow-1.1.1.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/dist/grails-core-1.1.1.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/dist/grails-test-1.1.1.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/dist/grails-crud-1.1.1.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/dist/grails-spring-1.1.1.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/dist/grails-bootstrap-1.1.1.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/dist/grails-resources-1.1.1.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/dist/grails-web-1.1.1.jar" />
 </classpath>
diff --git a/bigbluebutton-web/application.properties b/bigbluebutton-web/application.properties
index 1c1611e8fecbaaad87d01b0127efcf97b82bf67f..4f03899aa76d910fceeae350edb4486a89f0c765 100644
--- a/bigbluebutton-web/application.properties
+++ b/bigbluebutton-web/application.properties
@@ -1,5 +1,8 @@
-#Fri May 08 11:03:16 EDT 2009
-app.version=0.1
-app.servlet.version=2.4
-app.grails.version=1.0.4
-app.name=bigbluebutton
+#utf-8
+#Wed Sep 16 13:51:44 EDT 2009
+app.version=0.1
+app.servlet.version=2.4
+app.grails.version=1.1.1
+plugins.hibernate=1.1.1
+plugins.jsecurity=0.4.1
+app.name=bigbluebutton
diff --git a/bigbluebutton-web/bigbluebutton.launch b/bigbluebutton-web/bigbluebutton.launch
index c211c2f25f965cb49e84d801728c23e5873704cd..99e07b1b16cad9c5e1971953857572334f0cf3d3 100644
--- a/bigbluebutton-web/bigbluebutton.launch
+++ b/bigbluebutton-web/bigbluebutton.launch
@@ -1,20 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
-<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="grails.util.GrailsMain"/>
-<booleanAttribute key="org.eclipse.jdt.debug.ui.INCLUDE_EXTERNAL_JARS" value="true"/>
-<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER&quot; javaProject=&quot;bigbluebutton&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#10;"/>
-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry id=&quot;org.eclipse.jdt.launching.classpathentry.defaultClasspath&quot;&gt;&#10;&lt;memento exportedEntriesOnly=&quot;false&quot; project=&quot;bigbluebutton&quot;/&gt;&#10;&lt;/runtimeClasspathEntry&gt;&#10;"/>
-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/bigbluebutton&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/bigbluebutton"/>
 </listAttribute>
 <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
 <listEntry value="4"/>
 </listAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="bigbluebutton"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dbase.dir=${project_loc} -Dserver.port=8080 -Dgrails.env=development"/>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/bigbluebutton"/>
-</listAttribute>
 <booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER&quot; javaProject=&quot;bigbluebutton&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;GRAILS_HOME/dist/grails-bootstrap-1.1.1.jar&quot; path=&quot;3&quot; type=&quot;3&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;GRAILS_HOME/lib/groovy-all-1.6.3.jar&quot; path=&quot;3&quot; type=&quot;3&quot;/&gt;&#10;"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="grails.util.GrailsMain"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="bigbluebutton"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dbase.dir=&quot;${project_loc:bigbluebutton}&quot; -Dserver.port=8080 -Dgrails.env=development"/>
 </launchConfiguration>
diff --git a/bigbluebutton-web/grails-app/conf/Config.groovy b/bigbluebutton-web/grails-app/conf/Config.groovy
index 5f773131c89cb3099bbd23ef8353bdb240808a83..ebe67438cbdabbbd9eba9c7f84792fcea5739a97 100644
--- a/bigbluebutton-web/grails-app/conf/Config.groovy
+++ b/bigbluebutton-web/grails-app/conf/Config.groovy
@@ -102,7 +102,7 @@ environments {
         	 * 	 grails.app.controller="debug, stdout, logfile"
         	 * }
         	 */
-        	logger.grails.app="debug, stdout, logfile"
+        	//logger.grails.app="debug, stdout, logfile"
        }
    }
    production {
@@ -114,7 +114,7 @@ environments {
 	         * 	 grails.app.controller="debug, stdout, logfile"
 	         * }
 	         */
-	        logger.grails.app="debug, stdout, logfile"
+	        //logger.grails.app="debug, stdout, logfile"
        }
    }
    test {
@@ -125,7 +125,7 @@ environments {
    	         * 	 grails.app.controller="debug, stdout, logfile"
    	         * }
    	         */
-   	        logger.grails.app="debug, stdout, logfile"
+   	        //logger.grails.app="debug, stdout, logfile"
        }
    }
 }
diff --git a/bigbluebutton-web/grails-app/conf/SecurityFilters.groovy b/bigbluebutton-web/grails-app/conf/SecurityFilters.groovy
index c53a72c37f1118f26b99994cd50277d454776c05..7748fe37091884cf3d0122a28600a44697fbd4ab 100644
--- a/bigbluebutton-web/grails-app/conf/SecurityFilters.groovy
+++ b/bigbluebutton-web/grails-app/conf/SecurityFilters.groovy
@@ -1,22 +1,22 @@
-/*
- * BigBlueButton - http://www.bigbluebutton.org
- * 
- * Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
- * 
- * BigBlueButton is free software; you can redistribute it and/or modify it under the 
- * terms of the GNU Lesser General Public License as published by the Free Software 
- * Foundation; either version 3 of the License, or (at your option) any later 
- * version. 
- * 
- * BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY 
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public License along 
- * with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
- *
- * $Id: $
- */
+/*
+ * BigBlueButton - http://www.bigbluebutton.org
+ * 
+ * Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
+ * 
+ * BigBlueButton is free software; you can redistribute it and/or modify it under the 
+ * terms of the GNU Lesser General Public License as published by the Free Software 
+ * Foundation; either version 3 of the License, or (at your option) any later 
+ * version. 
+ * 
+ * BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY 
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public License along 
+ * with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
+ *
+ * $Id: $
+ */
 class SecurityFilters {
     def filters = {
         // Ensure that all controllers and actions require an authenticated user,
@@ -27,7 +27,9 @@ class SecurityFilters {
                 //if ((controllerName == "join") || (controllerName == "presentation")) return true
 
                 switch (controllerName) {
-                	case 'join':
+                	case 'portal':
+            		case 'join':
+            		case 'adhoc':
                 	case 'presentation':
                 		return true
                 		break
diff --git a/bigbluebutton-web/grails-app/conf/UrlMappings.groovy b/bigbluebutton-web/grails-app/conf/UrlMappings.groovy
index 93b41fffb447cccf5d217007cb58f59706a46a2b..adef496b28a66865e00c0f1c12b580eba9c32662 100644
--- a/bigbluebutton-web/grails-app/conf/UrlMappings.groovy
+++ b/bigbluebutton-web/grails-app/conf/UrlMappings.groovy
@@ -1,61 +1,68 @@
-/*
- * BigBlueButton - http://www.bigbluebutton.org
- * 
- * Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
- * 
- * BigBlueButton is free software; you can redistribute it and/or modify it under the 
- * terms of the GNU Lesser General Public License as published by the Free Software 
- * Foundation; either version 3 of the License, or (at your option) any later 
- * version. 
- * 
- * BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY 
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public License along 
- * with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
- *
- * $Id: $
- */
-class UrlMappings {
-    static mappings = {
-//    	"/presentation/$presentation_name"(controller:"presentation") {
- //     	  println 'executing /presentation/default mapping'
- //       	action = [GET:'show', POST:'upload', DELETE:'delete']
- //       }
-      "/presentation/upload"(controller:"presentation") {
-      		action = [GET:'show', POST:'upload', DELETE:'delete']
-      }
-      
-      "/presentation/$conference/$room/$presentation_name/slides"(controller:"presentation") {
-      		action = [GET:'numberOfSlides']
-      }
-      
-      "/presentation/$conference/$room/$presentation_name/slide/$id"(controller:"presentation") {
-      		action = [GET:'showSlide']
-      }
-      
-      "/presentation/$conference/$room/$presentation_name/thumbnails"(controller:"presentation") {
-      		action = [GET:'numberOfThumbnails']
-      }
-      
-      "/presentation/$conference/$room/$presentation_name/thumbnail/$id"(controller:"presentation") {
-      		action = [GET:'showThumbnail']
-      }
-      
-      "/conference-session/$action?/$id?"(controller:"publicScheduledSession") 
-      
-      "/schedule/$action?/$id?"(controller:"scheduledSession") {
-//    	  action = [GET:'show', POST:'create', DELETE:'delete']
-      }
-      
-      "/$controller/$action?/$id?"{
-	      constraints {
-			 // apply constraints here
-		  }
-	  }
-	  "500"(view:'/error')
-	  
-	  "/" (controller: 'conference', action: 'list')
-	}
-}
+/*
+ * BigBlueButton - http://www.bigbluebutton.org
+ * 
+ * Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
+ * 
+ * BigBlueButton is free software; you can redistribute it and/or modify it under the 
+ * terms of the GNU Lesser General Public License as published by the Free Software 
+ * Foundation; either version 3 of the License, or (at your option) any later 
+ * version. 
+ * 
+ * BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY 
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public License along 
+ * with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
+ *
+ * $Id: $
+ */
+class UrlMappings {
+    static mappings = {
+//    	"/presentation/$presentation_name"(controller:"presentation") {
+ //     	  println 'executing /presentation/default mapping'
+ //       	action = [GET:'show', POST:'upload', DELETE:'delete']
+ //       }
+      "/presentation/upload"(controller:"presentation") {
+      		action = [GET:'show', POST:'upload', DELETE:'delete']
+      }
+      
+      "/presentation/$conference/$room/$presentation_name/slides"(controller:"presentation") {
+      		action = [GET:'numberOfSlides']
+      }
+      
+      "/presentation/$conference/$room/$presentation_name/slide/$id"(controller:"presentation") {
+      		action = [GET:'showSlide']
+      }
+      
+      "/presentation/$conference/$room/$presentation_name/thumbnails"(controller:"presentation") {
+      		action = [GET:'numberOfThumbnails']
+      }
+      
+      "/presentation/$conference/$room/$presentation_name/thumbnail/$id"(controller:"presentation") {
+      		action = [GET:'showThumbnail']
+      }
+      
+      "/portal/$action"(controller:"portal") 
+
+      "/api/conference"(controller:"adhoc") {
+    	  format = 'xml'
+    	  action = [GET:'show', POST:'create', DELETE:'delete']
+      }
+      
+	  "/conference-session/$action?/$id?"(controller:"publicScheduledSession") 
+      
+      "/schedule/$action?/$id?"(controller:"scheduledSession") {
+//    	  action = [GET:'show', POST:'create', DELETE:'delete']
+      }
+      
+      "/$controller/$action?/$id?"{
+	      constraints {
+			 // apply constraints here
+		  }
+	  }
+	  "500"(view:'/error')
+	  
+	  "/" (controller: 'conference', action: 'list')
+	}
+}
diff --git a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/AdhocController.groovy b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/AdhocController.groovy
new file mode 100644
index 0000000000000000000000000000000000000000..6471f8f4f706082657f66db93b8476e6e5fa5a0d
--- /dev/null
+++ b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/AdhocController.groovy
@@ -0,0 +1,107 @@
+/* BigBlueButton - http://www.bigbluebutton.org
+ * 
+ * 
+ * Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
+ * 
+ * BigBlueButton is free software; you can redistribute it and/or modify it under the 
+ * terms of the GNU Lesser General Public License as published by the Free Software 
+ * Foundation; either version 3 of the License, or (at your option) any later 
+ * version. 
+ * 
+ * BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY 
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public License along 
+ * with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @version $Id: $
+ */
+package org.bigbluebutton.web.controllers
+
+import grails.converters.*
+import org.codehaus.groovy.grails.commons.*
+
+import org.bigbluebutton.presentation.service.AdhocConference 
+import org.bigbluebutton.web.services.AdhocConferenceService
+
+class AdhocController {
+	
+	AdhocConferenceService adhocConferenceService
+	
+	def index = {
+		log.info "AdhocController#index"
+	    redirect(action:invalid)
+	}
+
+	def invalid = {
+		log.info "AdhocController#invalid"
+		response.addHeader("Cache-Control", "no-cache")
+	    withFormat {				
+			xml {
+				render(contentType:"text/xml") {
+					'response'() {
+						returncode("FAILED")
+						messageKey("invalidRequest")
+						message("Invalid request.")
+					}
+				}
+			}
+		}
+	}
+	
+	def create = {
+		println "AdhocController#create"
+//		if (!adhocConferenceService.enabled) redirect(action:invalid);
+		
+		println "Got voiceBridge ${params.voiceBridge}"
+		adhocConferenceService.createConference(params.voiceBridge)
+		
+		AdhocConference conf = adhocConferenceService.getConferenceWithVoiceBridge(params.voiceBridge)
+		
+		response.addHeader("Cache-Control", "no-cache")
+	    withFormat {	
+			xml {
+				println "Rendering as xml"
+				render(contentType:"text/xml") {
+					'response'() {
+						returncode("SUCCESS")
+						moderatorToken("${conf.moderatorToken}")
+						attendeeToken("${conf.attendeeToken}")
+					}
+				}
+			}
+		}
+
+//		render "Hello world"
+	}
+
+	def show = {
+		println "AdhocController#show"
+		if (!adhocConferenceService.enabled) redirect(action:invalid);
+			
+	//	println "Got voiceBridge ${params.voiceBridge}"
+					
+		AdhocConference conf = adhocConferenceService.getConferenceWithVoiceBridge('85115')
+			
+		response.addHeader("Cache-Control", "no-cache")
+	    withFormat {				
+			xml {
+				render(contentType:"text/xml") {
+					'response'() {
+						returncode("SUCCESS")
+						moderatorToken("${conf.moderatorToken}")
+						attendeeToken("${conf.attendeeToken}")
+					}
+				}
+			}
+		}		
+			
+	}
+	
+	def join = {
+		String authToken = params.authToken
+		String fullname = params.fullname
+	}
+
+}
diff --git a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ConferenceController.groovy b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ConferenceController.groovy
index 02330df786deb34f9d329a2e777336f289ae53f9..0b72cd5871f16aab5c12c526e9f5e8c2946f246c 100644
--- a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ConferenceController.groovy
+++ b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ConferenceController.groovy
@@ -30,7 +30,7 @@ class ConferenceController {
     def index = { redirect(action:list,params:params) }
 
     // the delete, save and update actions only accept POST requests
-    def allowedMethods = [delete:'POST', save:'POST', update:'POST']
+    static def allowedMethods = [delete:'POST', save:'POST', update:'POST']
 
     def list = {
         if(!params.max) params.max = 10 
diff --git a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/PortalController.groovy b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/PortalController.groovy
new file mode 100644
index 0000000000000000000000000000000000000000..d87405fd0277f60d48882da1424960d1df9519f8
--- /dev/null
+++ b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/PortalController.groovy
@@ -0,0 +1,300 @@
+/* BigBlueButton - http://www.bigbluebutton.org
+ * 
+ * 
+ * Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
+ * 
+ * BigBlueButton is free software; you can redistribute it and/or modify it under the 
+ * terms of the GNU Lesser General Public License as published by the Free Software 
+ * Foundation; either version 3 of the License, or (at your option) any later 
+ * version. 
+ * 
+ * BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY 
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public License along 
+ * with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @author Jeremy Thomerson <jthomerson@genericconf.com>
+ * @version $Id: $
+ */
+package org.bigbluebutton.web.controllers
+
+import org.jsecurity.authc.UnknownAccountException
+import org.bigbluebutton.web.domain.ScheduledSession
+import org.bigbluebutton.web.domain.Conference
+import org.bigbluebutton.web.domain.User
+import grails.converters.*
+import org.codehaus.groovy.grails.commons.*
+import org.mortbay.log.Log;
+
+class PortalController {
+		
+	def index = {
+		log.info "PortalController#index"
+	    redirect(action:invalid)
+	}
+
+	def invalid = {
+		log.info "PortalController#invalid"
+		response.addHeader("Cache-Control", "no-cache")
+	    withFormat {				
+			xml {
+				render(contentType:"text/xml") {
+					'response'() {
+						returncode("FAILED")
+						messageKey("invalidRequest")
+						message("Invalid request.")
+					}
+				}
+			}
+		}
+	}
+	
+	def create = {
+		log.info "PortalController#create"
+		Integer atts = Integer.valueOf(params.maxAtts)
+		def num = params.confNum
+		def creator = params.creator
+		def name = params.name
+		String voiceConferenceBridge = params.voiceConfBridge
+		String hostPassword = params.hostPW
+		String moderatorPassword = params.moderatorPW
+		String attendeePassword = params.attendeePW
+		
+		log.info "checking for duplicate conference"
+
+		def existing = Conference.findByConferenceNumber(num)
+		if (existing != null) {
+			existing.sessions.each {
+				if (it.hostPassword == hostPassword && it.attendeePassword == attendeePassword 
+						&& it.moderatorPassword == moderatorPassword) {
+					
+					// found the one that's attempting to be created
+					// TODO: this needs more thought - need to better understand the conf number purpose, etc...
+					log.info "found matching duplicate - returning success w/ warning"
+					def sess = it
+					def conf = existing
+					response.addHeader("Cache-Control", "no-cache")
+				    withFormat {				
+						xml {
+							render(contentType:"text/xml") {
+								'createresp'() {
+									returncode("SUCCESS")
+									session("$sess.sessionId")
+			        				token("$sess.tokenId")
+			        				confID("$conf.id")
+									messageKey("duplicateWarning")
+									message("This may be a duplicate. It was retrieved, not created.")
+								}
+							}
+						}
+					}
+				} 						
+			}
+		} else {
+			
+			def username = "admin@test.com"
+			User user = User.findByUsername("${username}")
+	        if (!user) {
+	            throw new UnknownAccountException("No account found for user [${username}]")
+	        }
+
+			def conf = new Conference(
+					name: name, conferenceNumber: num, 
+					user: user, createdBy: creator, updatedBy: creator)
+			log.info "conf.save() = " + conf.save()
+		
+			log.info "conf has errors: " + conf.hasErrors()
+			if (conf.hasErrors()) {
+				conf.errors.each {
+					log.info it
+				}
+			}
+			log.info "conf id: " + conf.id
+			
+			String sessionId = UUID.randomUUID()
+			String tokenId = UUID.randomUUID()
+			Integer numberOfAttendees = atts
+			Boolean timeLimited = false
+			Date startDateTime = new Date()
+			//Date endDateTime = calendar.getTime()
+			Date endDateTime = null
+			
+			def sess = new ScheduledSession(
+				name: name, description: name,
+				createdBy: creator, modifiedBy: creator, sessionId: sessionId, tokenId: tokenId,
+				numberOfAttendees: atts, timeLimited: timeLimited, startDateTime: startDateTime,
+				endDateTime: startDateTime, record: false, passwordProtect: true, hostPassword: hostPassword,
+				moderatorPassword: moderatorPassword, attendeePassword: attendeePassword, 
+				voiceConferenceBridge: voiceConferenceBridge, conference: conf
+			)
+			log.info "sess.save() = " + sess.save()
+
+			log.info "sess has errors: " + sess.hasErrors()
+			if (sess.hasErrors()) {
+				sess.errors.each {
+					log.info it
+				}
+			}
+			log.info "sess id: " + sess.id
+
+			if (sess.id != null) {
+				log.info "sending success"
+				response.addHeader("Cache-Control", "no-cache")
+			    withFormat {				
+					xml {
+						render(contentType:"text/xml") {
+							'createresp'() {
+								returncode("SUCCESS")
+								session("$sess.sessionId")
+		        				token("$sess.tokenId")
+		        				confID("$conf.id")
+		        			}
+						}
+					}
+				}
+			} else {
+				log.info "sending fail"
+				// TODO: obviously need much better error handling here
+				response.addHeader("Cache-Control", "no-cache")
+			    withFormat {				
+					xml {
+						render(contentType:"text/xml") {
+							'createresp'() {
+								returncode("FAIL")
+								messageKey("generalError")
+								message("error creating conf")
+		        			}
+						}
+					}
+				}
+			}
+		}
+	}
+
+	def join = {
+		def sess = ScheduledSession.findByTokenId(params.tokenId)
+
+		if(!sess) {
+			response.addHeader("Cache-Control", "no-cache")
+		    withFormat {				
+				xml {
+					render(contentType:"text/xml") {
+						'joinresp'() {
+							returncode("FAIL")
+							messageKey("badTokenId")
+							message("no session with that tokenId")
+	        			}
+					}
+				}
+			}
+	    } else {
+	    	def config = ConfigurationHolder.config
+        	def hostURL = config.bigbluebutton.web.serverURL
+        	log.debug "serverURL $hostURL"
+	       	def now = new Date().time
+	       	def signedIn = false
+			def role = ''
+			switch (params.password) {
+				case sess.hostPassword:
+					log.debug "Logged in as host"
+					// Let us set role to MODERATOR for now as we don't support HOST yet
+					role = "MODERATOR"
+					signedIn = true
+					break
+				case sess.moderatorPassword:
+					log.debug "Logged in as as moderator"
+					role = "MODERATOR"
+					signedIn = true
+					break
+				case sess.attendeePassword:
+					log.debug "Logged in as viewer"
+					role = "VIEWER"
+					signedIn = true
+					break
+			}
+
+	    	if (signedIn) {
+				log.debug "Login successful...setting in session information"
+				log.info "fullname = " + params.fullname
+	   			session["fullname"] = params.fullname 
+				session["role"] = role
+				session["conference"] = sess.tokenId
+				session["room"] = sess.sessionId
+				session["voicebridge"] = sess.voiceConferenceBridge
+		
+				session["mode"] = "LIVE"
+				session["record"] = false
+				if (sess.record) {
+					session["record"] = true
+				}
+				log.debug "Joining LIVE and recording is ${sess.record}"
+			    log.debug "Displaying session information"
+			    //redirect(action:show)		
+	        	redirect(url:"${hostURL}/client/BigBlueButton.html")
+	    	} else {
+				response.addHeader("Cache-Control", "no-cache")
+			    withFormat {				
+					xml {
+						render(contentType:"text/xml") {
+							'joinresp'() {
+								returncode("FAIL")
+								messageKey("badPass")
+								message("incorrect password")
+		        			}
+						}
+					}
+				}
+	    	}
+	    }
+	}
+
+	def getToken = {
+		log.info "PortalController#getToken"
+		def num = params.confNum
+		String attendeePassword = params.attendeePW
+		
+		def conf = Conference.findByConferenceNumber(num)
+		def found = false
+		if (conf != null) {
+			conf.sessions.each {
+				if (it.attendeePassword == attendeePassword) {
+					// found the one that's attempting to be created
+					// TODO: this needs more thought - need to better understand the conf number purpose, etc...
+					log.info "found matching duplicate - returning success w/ warning"
+					def sess = it
+					found = true
+					response.addHeader("Cache-Control", "no-cache")
+				    withFormat {				
+						xml {
+							render(contentType:"text/xml") {
+								'createresp'() {
+									returncode("SUCCESS")
+									session("$sess.sessionId")
+			        				token("$sess.tokenId")
+			        				confID("$conf.id")
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+
+		if (!found) {
+			response.addHeader("Cache-Control", "no-cache")
+		    withFormat {				
+				xml {
+					render(contentType:"text/xml") {
+						'joinresp'() {
+							returncode("FAIL")
+							messageKey("confNotFound")
+							message("no conference found with that number and attendee password")
+	        			}
+					}
+				}
+			}
+		}
+	}
+}
diff --git a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ScheduledSessionController.groovy b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ScheduledSessionController.groovy
index 05df418cef513b36902ebedf58ec62a8ae90f143..53d32ad84c35cde76774bb87ee462d0162dd019e 100644
--- a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ScheduledSessionController.groovy
+++ b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ScheduledSessionController.groovy
@@ -31,7 +31,7 @@ class ScheduledSessionController {
     def index = { redirect(action:list,params:params) }
 
     // the delete, save and update actions only accept POST requests
-    def allowedMethods = [delete:'POST', save:'POST', update:'POST']
+    static def allowedMethods = [delete:'POST', save:'POST', update:'POST']
 
     def list = {
         if(!params.max) params.max = 10
diff --git a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/UserController.groovy b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/UserController.groovy
index 64d06bf46193d696d9ed1aebe02df03f0e7cfe3f..586791f9570df13eb2094db4333b8eb8f34a4f1a 100644
--- a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/UserController.groovy
+++ b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/UserController.groovy
@@ -29,7 +29,7 @@ class UserController {
     def index = { redirect(action:list,params:params) }
 
     // the delete, save and update actions only accept POST requests
-    def allowedMethods = [delete:'POST', save:'POST', update:'POST']
+    static def allowedMethods = [delete:'POST', save:'POST', update:'POST']
 
     def list = {
         if(!params.max) params.max = 10
diff --git a/bigbluebutton-web/grails-app/services/org/bigbluebutton/web/services/AdhocConferenceService.groovy b/bigbluebutton-web/grails-app/services/org/bigbluebutton/web/services/AdhocConferenceService.groovy
new file mode 100644
index 0000000000000000000000000000000000000000..cb8a2b58b96c01d66a4c2412d0d354c0a9313ab9
--- /dev/null
+++ b/bigbluebutton-web/grails-app/services/org/bigbluebutton/web/services/AdhocConferenceService.groovy
@@ -0,0 +1,113 @@
+/* BigBlueButton - http://www.bigbluebutton.org
+ * 
+ * 
+ * Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
+ * 
+ * BigBlueButton is free software; you can redistribute it and/or modify it under the 
+ * terms of the GNU Lesser General Public License as published by the Free Software 
+ * Foundation; either version 3 of the License, or (at your option) any later 
+ * version. 
+ * 
+ * BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY 
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public License along 
+ * with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @version $Id: $
+ */
+package org.bigbluebutton.web.services
+
+import org.bigbluebutton.presentation.service.AdhocConference
+import java.util.concurrent.ConcurrentHashMap
+
+public class AdhocConferenceService{
+
+	 boolean enabled = false
+	
+	 private final Map<String, AdhocConference> conferences
+	 
+	 public AdhocConferenceService() {
+		 conferences = new ConcurrentHashMap<String, AdhocConference>()
+	 }
+	 
+	 public void createConference(String voiceBridge) {
+		 AdhocConference conference = new AdhocConference(voiceBridge)
+		 if (!conferences.containsKey(conference.voiceBridge))
+			 conferences.put(conference.voiceBridge, conference) 
+	 }
+	 
+	 public void createConference(AdhocConference conference) {
+		 if (!conferences.containsKey(conference.voiceBridge))
+			 conferences.put(conference.voiceBridge, conference) 
+	 }
+	 
+	 public boolean conferenceExistWithVoiceBridge(String voiceBridge) {
+		 return conferences.containsKey(voiceBridge)
+	 }
+	
+	 /*
+	  *  Returns the AdhocConference if present, 
+	  *  or null if absent.
+	  */
+	 public AdhocConference getConferenceWithVoiceBridge(String voiceBridge) {
+		return conferences.get(voiceBridge) 
+	 }
+	 
+	 public boolean conferenceExistWithModeratorToken(String token) {
+		for (Iterator iter = conferences.values().iterator(); iter.hasNext();) {
+			AdhocConference conf = (AdhocConference) iter.next()
+			println conf.moderatorToken
+			if (conf.moderatorToken == token) {
+				return true
+			}
+		}			 
+		
+		return false
+	 }
+
+	 /*
+	  *  Returns the AdhocConference if present, 
+	  *  or null if absent.
+	  */
+	 public AdhocConference getConferenceWithModeratorToken(String token) {
+		for (Iterator iter = conferences.values().iterator(); iter.hasNext();) {
+			AdhocConference conf = (AdhocConference) iter.next()
+			println conf.moderatorToken
+			if (conf.moderatorToken == token) {
+				return conf
+			}
+		}			 
+			
+		return null
+	 }	 
+	 
+	 public boolean conferenceExistWithAttendeeToken(String token) {
+		for (Iterator iter = conferences.values().iterator(); iter.hasNext();) {
+			AdhocConference conf = (AdhocConference) iter.next()
+			println conf.attendeeToken
+			if (conf.attendeeToken == token) {
+				return true
+			}
+		}			 
+			
+		return false
+	}
+
+	 /*
+	  *  Returns the AdhocConference if present, 
+	  *  or null if absent.
+	  */
+	public AdhocConference getConferenceWithAttendeeToken(String token) {
+		for (Iterator iter = conferences.values().iterator(); iter.hasNext();) {
+			AdhocConference conf = (AdhocConference) iter.next()
+			println conf.attendeeToken
+			if (conf.attendeeToken == token) {
+				return conf
+			}
+		}			 
+				
+		return null
+	}	 
+}
diff --git a/bigbluebutton-web/ivy.xml b/bigbluebutton-web/ivy.xml
new file mode 100644
index 0000000000000000000000000000000000000000..84e90708e56ae8b5dfc9a6c9be7d21a78af08da6
--- /dev/null
+++ b/bigbluebutton-web/ivy.xml
@@ -0,0 +1,28 @@
+<ivy-module version="2.0">
+    <info organisation="org.example" module="bigbluebutton"/>
+    <configurations defaultconfmapping="build->default;compile->compile(*),master(*);test,runtime->runtime(*),master(*)">
+        <conf name="build"/>
+        <conf name="compile"/>
+        <conf name="test" extends="compile"/>
+        <conf name="runtime" extends="compile"/>
+    </configurations>
+    <dependencies>
+        <dependency org="org.grails" name="grails-bootstrap" rev="1.1.1" conf="build"/>
+        <dependency org="org.grails" name="grails-scripts" rev="1.1.1" conf="build"/>
+        <dependency org="org.grails" name="grails-gorm" rev="1.1.1" conf="compile"/>
+        <dependency org="org.grails" name="grails-web" rev="1.1.1" conf="compile"/>
+        <dependency org="org.grails" name="grails-test" rev="1.1.1" conf="test"/>
+        <dependency org="org.slf4j" name="slf4j-log4j12" rev="1.5.5" conf="runtime"/>
+        <dependency org="opensymphony" name="oscache" rev="2.4" conf="runtime">
+            <exclude org="javax.jms" module="jms" name="*" type="*" ext="*" conf="" matcher="exact"/>
+            <exclude org="commons-logging" module="commons-logging" name="*" type="*" ext="*" conf="" matcher="exact"/>
+            <exclude org="javax.servlet" module="servlet-api" name="*" type="*" ext="*" conf="" matcher="exact"/>
+        </dependency>
+        <dependency org="hsqldb" name="hsqldb" rev="1.8.0.5" conf="runtime"/>
+		<dependency org="net.sf.ehcache" name="ehcache" rev="1.5.0" conf="runtime"/>
+        <!--
+        <dependency org="mysql" name="mysql-connector-java" rev="5.1.6" conf="runtime"/>
+        <dependency org="postgresql" name="postgresql" rev="8.3-603.jdbc3" conf="runtime"/>
+        -->
+    </dependencies>
+</ivy-module>
diff --git a/bigbluebutton-web/ivysettings.xml b/bigbluebutton-web/ivysettings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5972c9ad7d9e31576c537cbdc639778d46a71fe6
--- /dev/null
+++ b/bigbluebutton-web/ivysettings.xml
@@ -0,0 +1,15 @@
+<ivysettings>
+  <settings defaultResolver="codehaus-plus"/>
+  <include url="${ivy.default.settings.dir}/ivysettings-public.xml" />
+  <include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/>
+  <include url="${ivy.default.settings.dir}/ivysettings-local.xml" />
+  <include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/>
+  <resolvers>
+    <chain name="codehaus-plus" dual="true">
+      <ibiblio name="codehaus-snapshots" root="http://snapshots.repository.codehaus.org" m2compatible="true" changingPattern=".*SNAPSHOT"/>
+      <ibiblio name="codehaus" root="http://repository.codehaus.org" m2compatible="true"/>
+      <ibiblio name="javanet" root="http://download.java.net/maven/2/" m2compatible="true"/>
+      <resolver ref="public"/>
+    </chain>
+  </resolvers>
+</ivysettings>
diff --git a/bigbluebutton-web/src/groovy/org/bigbluebutton/presentation/service/AdhocConference.groovy b/bigbluebutton-web/src/groovy/org/bigbluebutton/presentation/service/AdhocConference.groovy
new file mode 100644
index 0000000000000000000000000000000000000000..8b7e5dd7608992d6fe70c19ef5296be0cd981639
--- /dev/null
+++ b/bigbluebutton-web/src/groovy/org/bigbluebutton/presentation/service/AdhocConference.groovy
@@ -0,0 +1,41 @@
+/* BigBlueButton - http://www.bigbluebutton.org
+ * 
+ * 
+ * Copyright (c) 2008-2009 by respective authors (see below). All rights reserved.
+ * 
+ * BigBlueButton is free software; you can redistribute it and/or modify it under the 
+ * terms of the GNU Lesser General Public License as published by the Free Software 
+ * Foundation; either version 3 of the License, or (at your option) any later 
+ * version. 
+ * 
+ * BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY 
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public License along 
+ * with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @version $Id: $
+ */
+package org.bigbluebutton.presentation.service
+
+
+public final class AdhocConference{
+
+	final String room  
+	final String moderatorToken
+	final String attendeeToken
+	final String voiceBridge
+	
+	public AdhocConference(String voiceBridge) {
+		this(voiceBridge, UUID.randomUUID().toString(), UUID.randomUUID().toString(), UUID.randomUUID().toString())
+	}
+	
+	public AdhocConference(String voiceBridge, String room, String modToken, String attToken) {
+		this.voiceBridge = voiceBridge
+		this.room = room
+		this.moderatorToken = modToken
+		this.attendeeToken = attToken
+	}
+	
+}
diff --git a/bigbluebutton-web/test/integration/org/bigbluebutton/web/services/AdhocConferenceServiceTests.groovy b/bigbluebutton-web/test/integration/org/bigbluebutton/web/services/AdhocConferenceServiceTests.groovy
new file mode 100644
index 0000000000000000000000000000000000000000..2a9884b0d7236be4fc57889abe64264da06f0e42
--- /dev/null
+++ b/bigbluebutton-web/test/integration/org/bigbluebutton/web/services/AdhocConferenceServiceTests.groovy
@@ -0,0 +1,47 @@
+package org.bigbluebutton.web.services
+
+import grails.test.*
+import org.bigbluebutton.presentation.service.AdhocConference
+
+class AdhocConferenceServiceTests extends GrailsUnitTestCase {
+    protected void setUp() {
+        super.setUp()
+    }
+
+    protected void tearDown() {
+        super.tearDown()
+    }
+
+    void testConferenceRoomExist() {
+    	AdhocConferenceService service = new AdhocConferenceService()
+    	service.createConference('85115');
+    	
+    	assertTrue service.conferenceExistWithVoiceBridge('85115')
+    }
+    
+    void testConferenceExistWithModeratorToken() {
+    	AdhocConferenceService service = new AdhocConferenceService()
+    	AdhocConference conf = new AdhocConference('85115', 'test-room', 'modToken', 'attToken')
+    	service.createConference(conf);
+    	
+    	assertTrue service.conferenceExistWithModeratorToken('modToken')
+    }
+
+    void testGetConferenceExistWithModeratorToken() {
+    	AdhocConferenceService service = new AdhocConferenceService()
+    	AdhocConference conf = new AdhocConference('85115', 'test-room', 'modToken', 'attToken')
+    	service.createConference(conf);
+    	
+    	AdhocConference conf1 = service.getConferenceWithModeratorToken('modToken')
+    	assertEquals conf1.moderatorToken, 'modToken'
+    }
+    
+    void testGetConferenceWithAttendeeToken() {
+    	AdhocConferenceService service = new AdhocConferenceService()
+    	AdhocConference conf = new AdhocConference('85115', 'test-room', 'modToken', 'attToken')
+    	service.createConference(conf);
+    	
+    	AdhocConference conf1 = service.getConferenceWithAttendeeToken('attToken')
+    	assertEquals conf1.attendeeToken, 'attToken'
+    }
+}
diff --git a/bigbluebutton-web/test/unit/org/bigbluebutton/presentation/service/AdhocConferenceTests.groovy b/bigbluebutton-web/test/unit/org/bigbluebutton/presentation/service/AdhocConferenceTests.groovy
new file mode 100644
index 0000000000000000000000000000000000000000..8378a239bfc2068ecae9f385fa1fa98355543faf
--- /dev/null
+++ b/bigbluebutton-web/test/unit/org/bigbluebutton/presentation/service/AdhocConferenceTests.groovy
@@ -0,0 +1,18 @@
+package org.bigbluebutton.presentation.service
+
+import grails.test.*
+
+class AdhocConferenceTests extends GrailsUnitTestCase {
+    protected void setUp() {
+        super.setUp()
+    }
+
+    protected void tearDown() {
+        super.tearDown()
+    }
+
+    void testCreateAdhocConference() {
+    	def conf = new AdhocConference('85115', 'test-room', 'modToken', 'attToken')
+    	assertEquals 'modToken', conf.moderatorToken
+    }
+}
diff --git a/bigbluebutton-web/web-app/WEB-INF/applicationContext.xml b/bigbluebutton-web/web-app/WEB-INF/applicationContext.xml
index c081da0c32e383dfdde2eefbfaee17e2833d8004..038251b2c2dc4fe6191e2efe1699b28ea70c7f72 100644
--- a/bigbluebutton-web/web-app/WEB-INF/applicationContext.xml
+++ b/bigbluebutton-web/web-app/WEB-INF/applicationContext.xml
@@ -17,7 +17,8 @@ http://www.springframework.org/schema/beans http://www.springframework.org/schem
 	</bean>
 
     <bean id="pluginMetaManager" class="org.codehaus.groovy.grails.plugins.DefaultPluginMetaManager">
-        <constructor-arg value="classpath*:**/plugins/*/plugin.xml" />
+        <property name="grailsApplication" ref="grailsApplication" />
+        <property name="resourcePattern" value="/WEB-INF/plugins/*/plugin.xml" />
     </bean>
 
     <bean id="grailsConfigurator" class="org.codehaus.groovy.grails.commons.spring.GrailsRuntimeConfigurator">
diff --git a/bigbluebutton-web/web-app/WEB-INF/sitemesh.xml b/bigbluebutton-web/web-app/WEB-INF/sitemesh.xml
index e1a3a28efd9876801a1a89200bf5749b92e706c4..95943f14564acb1558b3cdc4a51aa47f69da0baa 100644
--- a/bigbluebutton-web/web-app/WEB-INF/sitemesh.xml
+++ b/bigbluebutton-web/web-app/WEB-INF/sitemesh.xml
@@ -1,11 +1,11 @@
 <sitemesh>
     <page-parsers>
         <parser content-type="text/html"
-            class="com.opensymphony.module.sitemesh.parser.FastPageParser" />
+            class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
         <parser content-type="text/html;charset=ISO-8859-1"
-            class="com.opensymphony.module.sitemesh.parser.FastPageParser" />
+            class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
         <parser content-type="text/html;charset=UTF-8"
-            class="com.opensymphony.module.sitemesh.parser.FastPageParser" />            
+            class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />            
     </page-parsers>
 
     <decorator-mappers>
diff --git a/bigbluebutton-web/web-app/WEB-INF/tld/grails.tld b/bigbluebutton-web/web-app/WEB-INF/tld/grails.tld
index d2e561f41041b4c5cdb7089c0269964a5d056b29..d3acc1ca1560b73a0c5b1ac8b8ee95ea907b6053 100644
--- a/bigbluebutton-web/web-app/WEB-INF/tld/grails.tld
+++ b/bigbluebutton-web/web-app/WEB-INF/tld/grails.tld
@@ -9,414 +9,6 @@
     <short-name>grails</short-name>
     <uri>http://grails.codehaus.org/tags</uri>
 
-    <tag>
-        <description>
-        	Includes a javascript src file, library or inline script
-	 	if the tag has no src or library attributes its assumed to be an inline script
-        </description>
-        <name>javascript</name>
-        <tag-class>org.codehaus.groovy.grails.plugins.web.taglib.JavascriptTagLib</tag-class>
-        <body-content>JSP</body-content>
-        <attribute>
-            <description>A predefined JavaScript or AJAX library to load</description>
-            <name>library</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <description>A custom (or unknown to Grails) JavaScript source file</description>
-            <name>src</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <description>Since 0.6 Specifies the full base url to prepend to the library name</description>
-            <name>base</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <dynamic-attributes>false</dynamic-attributes>
-    </tag>
-    
-    <!--  
-    <tag>
-    	<description>
-    	</description>
-    	<name></name>
-    	<tag-class></tag-class>
-    	<body-content></body-content>
-    	<attribute>
-    		<description></description>
-    		<name></name>
-    		<required></required>
-    		<rtexprvalue></rtexprvalue>
-    	</attribute>
-    </tag>
-    -->
-    <tag>
-    	<description>Escapes a javasacript string replacing single/double quotes and new lines
-    	</description>
-    	<name>escapeJavascript</name>
-    	<tag-class>org.codehaus.groovy.grails.plugins.web.taglib.JavascriptTagLib</tag-class>
-    	<body-content>JSP</body-content>
-    </tag>
-    
-    <tag>
-    	<description>Creates a form submit button that submits the current form to a remote ajax call
-    	</description>
-    	<name>submitToRemote</name>
-    	<tag-class>org.codehaus.groovy.grails.plugins.web.taglib.JavascriptTagLib</tag-class>
-    	<body-content>JSP</body-content>
-    	<attribute>
-            <name>name</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>value</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>id</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>class</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-    </tag>
-    
-    <tag>
-    	<description>A field that sends its value to a remote link
-    	</description>
-    	<name>remoteField</name>
-    	<tag-class>org.codehaus.groovy.grails.plugins.web.taglib.JavascriptTagLib</tag-class>
-    	<body-content>JSP</body-content>
-    	<attribute>
-            <name>name</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>value</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>paramName</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-    	<attribute>
-            <name>before</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>after</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>action</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>controller</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>id</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>params</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>asynchronous</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>method</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>update</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>onSuccess</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>onFailure</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>onComplete</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>onLoading</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>onLoaded</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>onUninitialized</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>on_ERROR_CODE</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <dynamic-attributes>true</dynamic-attributes>
-    </tag>
-    <tag>
-        <description>
-        	Enables the storing of a value into the given ${var}
-        </description>
-        <name>set</name>
-        <tag-class>org.codehaus.groovy.grails.web.taglib.GroovySetTag</tag-class>
-        <body-content>JSP</body-content>
-        <attribute>
-            <description>The value to store</description>
-            <name>value</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <description>The name of the variable to store the value in</description>
-            <name>var</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <dynamic-attributes>false</dynamic-attributes>
-    </tag>
-
-    <tag>
-        <description>
-        	Enables the storing of a value into the given ${var} into the page context
-        </description>
-        <name>def</name>
-        <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyDefTag</tag-class>
-        <body-content>JSP</body-content>
-        <attribute>
-            <description>The value to store</description>
-            <name>value</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <description>The name of the variable to store the value in</description>
-            <name>var</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <dynamic-attributes>false</dynamic-attributes>
-    </tag>
-
-    <tag>
-        <description>
-        	Logical if tag to test whether the given condition is true
-        </description>
-        <name>if</name>
-        <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyIfTag</tag-class>
-        <body-content>JSP</body-content>
-        <attribute>
-            <description>The condition to test</description>
-            <name>test</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <dynamic-attributes>false</dynamic-attributes>
-    </tag>
-
-    <tag>
-        <description>
-        	Logical else tag as fallback if the if condition fails
-        </description>
-        <name>else</name>
-        <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyElseTag</tag-class>
-        <body-content>JSP</body-content>
-        <dynamic-attributes>false</dynamic-attributes>
-    </tag>
-
-    <tag>
-        <description>
-        	Logical elseif tag to test whether the given condition is true
-        </description>
-        <name>elseif</name>
-        <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyElseIfTag</tag-class>
-        <body-content>JSP</body-content>
-        <attribute>
-            <description>The condition to test</description>
-            <name>test</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <dynamic-attributes>false</dynamic-attributes>
-    </tag>
-
-	<tag>
-        <description>
-        	Tag to loop over a collection while the test expression returns true
-        </description>
-        <name>while</name>
-        <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyWhileTag</tag-class>
-        <body-content>JSP</body-content>
-        <attribute>
-            <description>The condition to test</description>
-            <name>test</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <dynamic-attributes>false</dynamic-attributes>
-    </tag>
-
-    <tag>
-        <description>Iterates over the given collection</description>
-        <name>each</name>
-        <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyEachTag</tag-class>
-        <body-content>JSP</body-content>
-        <attribute>
-        	<description>The collection to iterate over</description>
-            <name>in</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-        	<description>An optional var-name to reference onto the elements</description>
-            <name>var</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>status</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <dynamic-attributes>true</dynamic-attributes>
-    </tag>
-
-    <tag>
-        <description>Iterates over the given collection</description>
-        <name>findAll</name>
-        <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyFindAllTag</tag-class>
-        <body-content>JSP</body-content>
-        <attribute>
-        	<description>The collection to iterate over</description>
-            <name>in</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-        	<description>An optional var-name to reference onto the elements</description>
-            <name>var</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-        	<description>The expression to filter the elements to iterate over</description>
-            <name>expr</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>status</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <dynamic-attributes>true</dynamic-attributes>
-    </tag>
-
-	<tag>
-        <description>Iterates over the given collection and collects the elements
-        	you want to work with</description>
-        <name>collect</name>
-        <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyCollectTag</tag-class>
-        <body-content>JSP</body-content>
-        <attribute>
-        	<description>The collection to iterate over</description>
-            <name>in</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-        	<description>An optional var-name to reference onto the elements</description>
-            <name>var</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-        	<description>The expression to use to collect the elements. The
-        	expression must retur true to add the element to the
-        	collection</description>
-            <name>expr</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>status</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <dynamic-attributes>false</dynamic-attributes>
-    </tag>
-
-    <tag>
-        <description>Iterates over the given collection and filters the elements
-        with a regular expression</description>
-        <name>grep</name>
-        <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyGrepTag</tag-class>
-        <body-content>JSP</body-content>
-        <attribute>
-        	<description>The collection to iterate over</description>
-            <name>in</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-        	<description>An optional var-name to reference onto the elements</description>
-            <name>var</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-        	<description>The regular expression to filter the element with. The
-        	filter is a simple Groovy Regex</description>
-            <name>filter</name>
-            <required>true</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <attribute>
-            <name>status</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-        <dynamic-attributes>false</dynamic-attributes>
-    </tag>
-
 
     <tag>
         <name>link</name>
diff --git a/bigbluebutton-web/web-app/WEB-INF/tld/spring.tld b/bigbluebutton-web/web-app/WEB-INF/tld/spring.tld
index a6f7bffac625ac8a117acbdd35e03cc10841b1ba..1bc7091f03c98e4c6182a154aafddef0c4ff78e6 100644
--- a/bigbluebutton-web/web-app/WEB-INF/tld/spring.tld
+++ b/bigbluebutton-web/web-app/WEB-INF/tld/spring.tld
@@ -1,311 +1,311 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
-
-<taglib>
-
-	<tlib-version>1.1.1</tlib-version>
-
-	<jsp-version>1.2</jsp-version>
-
-	<short-name>Spring</short-name>
-
-	<uri>http://www.springframework.org/tags</uri>
-
-	<description>Spring Framework JSP Tag Library. Authors: Rod Johnson, Juergen Hoeller</description>
-
-
-	<tag>
-
-		<name>htmlEscape</name>
-		<tag-class>org.springframework.web.servlet.tags.HtmlEscapeTag</tag-class>
-		<body-content>JSP</body-content>
-
-		<description>
-			Sets default HTML escape value for the current page.
-			Overrides a "defaultHtmlEscape" context-param in web.xml, if any.
-		</description>
-
-		<attribute>
-			<name>defaultHtmlEscape</name>
-			<required>true</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-	</tag>
-
-
-	<tag>
-
-		<name>escapeBody</name>
-		<tag-class>org.springframework.web.servlet.tags.EscapeBodyTag</tag-class>
-		<body-content>JSP</body-content>
-
-		<description>
-			Escapes its enclosed body content, applying HTML escaping and/or JavaScript escaping.
-			The HTML escaping flag participates in a page-wide or application-wide setting
-			(i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml).
-		</description>
-
-		<attribute>
-			<name>htmlEscape</name>
-			<required>false</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-		<attribute>
-			<name>javaScriptEscape</name>
-			<required>false</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-	</tag>
-
-
-	<tag>
-
-		<name>message</name>
-		<tag-class>org.springframework.web.servlet.tags.MessageTag</tag-class>
-		<body-content>JSP</body-content>
-
-		<description>
-			Retrieves the message with the given code, or text if code isn't resolvable.
-			The HTML escaping flag participates in a page-wide or application-wide setting
-			(i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml).
-		</description>
-
-		<attribute>
-			<name>code</name>
-			<required>false</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-		<attribute>
-			<name>arguments</name>
-			<required>false</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-		<attribute>
-			<name>text</name>
-			<required>false</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-		<attribute>
-			<name>var</name>
-			<required>false</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-		<attribute>
-			<name>scope</name>
-			<required>false</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-		<attribute>
-			<name>htmlEscape</name>
-			<required>false</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-		<attribute>
-			<name>javaScriptEscape</name>
-			<required>false</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-	</tag>
-
-
-	<tag>
-
-		<name>theme</name>
-		<tag-class>org.springframework.web.servlet.tags.ThemeTag</tag-class>
-		<body-content>JSP</body-content>
-
-		<description>
-			Retrieves the theme message with the given code, or text if code isn't resolvable.
-			The HTML escaping flag participates in a page-wide or application-wide setting
-			(i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml).
-		</description>
-
-		<attribute>
-			<name>code</name>
-			<required>false</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-		<attribute>
-			<name>arguments</name>
-			<required>false</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-		<attribute>
-			<name>text</name>
-			<required>false</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-		<attribute>
-			<name>var</name>
-			<required>false</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-		<attribute>
-			<name>scope</name>
-			<required>false</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-		<attribute>
-			<name>htmlEscape</name>
-			<required>false</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-		<attribute>
-			<name>javaScriptEscape</name>
-			<required>false</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-	</tag>
-
-
-	<tag>
-
-		<name>hasBindErrors</name>
-		<tag-class>org.springframework.web.servlet.tags.BindErrorsTag</tag-class>
-		<body-content>JSP</body-content>
-
-		<description>
-			Provides Errors instance in case of bind errors.
-			The HTML escaping flag participates in a page-wide or application-wide setting
-			(i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml).
-		</description>
-
-		<variable>
-			<name-given>errors</name-given>
-			<variable-class>org.springframework.validation.Errors</variable-class>
-		</variable>
-
-		<attribute>
-			<name>name</name>
-			<required>true</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-		<attribute>
-			<name>htmlEscape</name>
-			<required>false</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-	</tag>
-
-
-	<tag>
-
-		<name>nestedPath</name>
-		<tag-class>org.springframework.web.servlet.tags.NestedPathTag</tag-class>
-		<body-content>JSP</body-content>
-
-		<description>
-			Sets a nested path to be used by the bind tag's path.
-		</description>
-
-		<variable>
-			<name-given>nestedPath</name-given>
-			<variable-class>java.lang.String</variable-class>
-		</variable>
-
-		<attribute>
-			<name>path</name>
-			<required>true</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-	</tag>
-
-
-	<tag>
-
-		<name>bind</name>
-		<tag-class>org.springframework.web.servlet.tags.BindTag</tag-class>
-		<body-content>JSP</body-content>
-
-		<description>
-			Provides BindStatus object for the given bind path.
-			The HTML escaping flag participates in a page-wide or application-wide setting
-			(i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml).
-		</description>
-
-		<variable>
-			<name-given>status</name-given>
-			<variable-class>org.springframework.web.servlet.support.BindStatus</variable-class>
-		</variable>
-
-		<attribute>
-			<name>path</name>
-			<required>true</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-		<attribute>
-			<name>ignoreNestedPath</name>
-			<required>false</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-		<attribute>
-			<name>htmlEscape</name>
-			<required>false</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-	</tag>
-
-
-	<tag>
-
-		<name>transform</name>
-		<tag-class>org.springframework.web.servlet.tags.TransformTag</tag-class>
-		<body-content>JSP</body-content>
-
-		<description>
-			Provides transformation of variables to Strings, using an appropriate
-			custom PropertyEditor from BindTag (can only be used inside BindTag).
-			The HTML escaping flag participates in a page-wide or application-wide setting
-			(i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml).
-		</description>
-
-		<attribute>
-			<name>value</name>
-			<required>true</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-		<attribute>
-			<name>var</name>
-			<required>false</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-		<attribute>
-			<name>scope</name>
-			<required>false</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-		<attribute>
-			<name>htmlEscape</name>
-			<required>false</required>
-			<rtexprvalue>true</rtexprvalue>
-		</attribute>
-
-	</tag>
-
-</taglib>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
+
+<taglib>
+
+	<tlib-version>1.1.1</tlib-version>
+
+	<jsp-version>1.2</jsp-version>
+
+	<short-name>Spring</short-name>
+
+	<uri>http://www.springframework.org/tags</uri>
+
+	<description>Spring Framework JSP Tag Library. Authors: Rod Johnson, Juergen Hoeller</description>
+
+
+	<tag>
+
+		<name>htmlEscape</name>
+		<tag-class>org.springframework.web.servlet.tags.HtmlEscapeTag</tag-class>
+		<body-content>JSP</body-content>
+
+		<description>
+			Sets default HTML escape value for the current page.
+			Overrides a "defaultHtmlEscape" context-param in web.xml, if any.
+		</description>
+
+		<attribute>
+			<name>defaultHtmlEscape</name>
+			<required>true</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+	</tag>
+
+
+	<tag>
+
+		<name>escapeBody</name>
+		<tag-class>org.springframework.web.servlet.tags.EscapeBodyTag</tag-class>
+		<body-content>JSP</body-content>
+
+		<description>
+			Escapes its enclosed body content, applying HTML escaping and/or JavaScript escaping.
+			The HTML escaping flag participates in a page-wide or application-wide setting
+			(i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml).
+		</description>
+
+		<attribute>
+			<name>htmlEscape</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+		<attribute>
+			<name>javaScriptEscape</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+	</tag>
+
+
+	<tag>
+
+		<name>message</name>
+		<tag-class>org.springframework.web.servlet.tags.MessageTag</tag-class>
+		<body-content>JSP</body-content>
+
+		<description>
+			Retrieves the message with the given code, or text if code isn't resolvable.
+			The HTML escaping flag participates in a page-wide or application-wide setting
+			(i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml).
+		</description>
+
+		<attribute>
+			<name>code</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+		<attribute>
+			<name>arguments</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+		<attribute>
+			<name>text</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+		<attribute>
+			<name>var</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+		<attribute>
+			<name>scope</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+		<attribute>
+			<name>htmlEscape</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+		<attribute>
+			<name>javaScriptEscape</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+	</tag>
+
+
+	<tag>
+
+		<name>theme</name>
+		<tag-class>org.springframework.web.servlet.tags.ThemeTag</tag-class>
+		<body-content>JSP</body-content>
+
+		<description>
+			Retrieves the theme message with the given code, or text if code isn't resolvable.
+			The HTML escaping flag participates in a page-wide or application-wide setting
+			(i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml).
+		</description>
+
+		<attribute>
+			<name>code</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+		<attribute>
+			<name>arguments</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+		<attribute>
+			<name>text</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+		<attribute>
+			<name>var</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+		<attribute>
+			<name>scope</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+		<attribute>
+			<name>htmlEscape</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+		<attribute>
+			<name>javaScriptEscape</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+	</tag>
+
+
+	<tag>
+
+		<name>hasBindErrors</name>
+		<tag-class>org.springframework.web.servlet.tags.BindErrorsTag</tag-class>
+		<body-content>JSP</body-content>
+
+		<description>
+			Provides Errors instance in case of bind errors.
+			The HTML escaping flag participates in a page-wide or application-wide setting
+			(i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml).
+		</description>
+
+		<variable>
+			<name-given>errors</name-given>
+			<variable-class>org.springframework.validation.Errors</variable-class>
+		</variable>
+
+		<attribute>
+			<name>name</name>
+			<required>true</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+		<attribute>
+			<name>htmlEscape</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+	</tag>
+
+
+	<tag>
+
+		<name>nestedPath</name>
+		<tag-class>org.springframework.web.servlet.tags.NestedPathTag</tag-class>
+		<body-content>JSP</body-content>
+
+		<description>
+			Sets a nested path to be used by the bind tag's path.
+		</description>
+
+		<variable>
+			<name-given>nestedPath</name-given>
+			<variable-class>java.lang.String</variable-class>
+		</variable>
+
+		<attribute>
+			<name>path</name>
+			<required>true</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+	</tag>
+
+
+	<tag>
+
+		<name>bind</name>
+		<tag-class>org.springframework.web.servlet.tags.BindTag</tag-class>
+		<body-content>JSP</body-content>
+
+		<description>
+			Provides BindStatus object for the given bind path.
+			The HTML escaping flag participates in a page-wide or application-wide setting
+			(i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml).
+		</description>
+
+		<variable>
+			<name-given>status</name-given>
+			<variable-class>org.springframework.web.servlet.support.BindStatus</variable-class>
+		</variable>
+
+		<attribute>
+			<name>path</name>
+			<required>true</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+		<attribute>
+			<name>ignoreNestedPath</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+		<attribute>
+			<name>htmlEscape</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+	</tag>
+
+
+	<tag>
+
+		<name>transform</name>
+		<tag-class>org.springframework.web.servlet.tags.TransformTag</tag-class>
+		<body-content>JSP</body-content>
+
+		<description>
+			Provides transformation of variables to Strings, using an appropriate
+			custom PropertyEditor from BindTag (can only be used inside BindTag).
+			The HTML escaping flag participates in a page-wide or application-wide setting
+			(i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml).
+		</description>
+
+		<attribute>
+			<name>value</name>
+			<required>true</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+		<attribute>
+			<name>var</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+		<attribute>
+			<name>scope</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+		<attribute>
+			<name>htmlEscape</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+		</attribute>
+
+	</tag>
+
+</taglib>