diff --git a/bbb-api-demo/src/main/webapp/bbb_api.jsp b/bbb-api-demo/src/main/webapp/bbb_api.jsp
index b90d7c0ba646b63b2a993f6d705ec3479fc3467e..6c915393f3a595dfc599dcd048bcd237ad87b28a 100755
--- a/bbb-api-demo/src/main/webapp/bbb_api.jsp
+++ b/bbb-api-demo/src/main/webapp/bbb_api.jsp
@@ -168,7 +168,14 @@ public String getJoinMeetingURL(String username, String meetingID, String passwo
 
 public String getJoinURL(String username, String meetingID, String record, String welcome, Map<String, String> metadata, String xml) {
     String isHTML5Client = "false";
-    return getJoinURLExtended(username, meetingID, record, welcome, metadata, xml, isHTML5Client);
+    String isModerator = "true";
+    //TODO - can I avoid having to pass these?
+
+
+
+
+
+    return getJoinURLExtended(username, meetingID, record, welcome, metadata, xml, isHTML5Client, isModerator);
 }
 
 
@@ -183,13 +190,14 @@ public String getJoinURL(String username, String meetingID, String record, Strin
 //  - metadata (passed through when record="true"
 //  - xml (used for pre-upload of slides)_
 //  - isHTML5Client ["true", "false"]
+//  - isModerator ["true", "false"]
 //
 // Returned
 //  - valid join URL using the username
 //
 //  Note this meeting will use username for meetingID
 
-public String getJoinURLExtended(String username, String meetingID, String record, String welcome, Map<String, String> metadata, String xml, String isHTML5Client) {
+public String getJoinURLExtended(String username, String meetingID, String record, String welcome, Map<String, String> metadata, String xml, String isHTML5Client, String isModerator) {
 
 	String base_url_create = BigBlueButtonURL + "api/create?";
 	String base_url_join = BigBlueButtonURL + "api/join?";
@@ -220,7 +228,6 @@ public String getJoinURLExtended(String username, String meetingID, String recor
 	//
 	// Note: We're hard-coding the password for moderator and attendee (viewer) for purposes of demo.
 	//
-
 	String create_parameters = "name=" + urlEncode(meetingID)
 		+ "&meetingID=" + urlEncode(meetingID) + welcome_param + voiceBridge_param
 		+ "&attendeePW=ap&moderatorPW=mp"
@@ -228,6 +235,11 @@ public String getJoinURLExtended(String username, String meetingID, String recor
 		+ "&record=" + record + getMetaData( metadata );
 
 
+	String password = "mp"; // Attempt to join as moderator by default
+	if ("false" == isModerator) {
+		password = "ap"; // default attendee password
+	}
+
 	// Attempt to create a meeting using meetingID
 	Document doc = null;
 	try {
@@ -251,7 +263,7 @@ public String getJoinURLExtended(String username, String meetingID, String recor
 			+ "&fullName=" + urlEncode(username)
 
 		+ "&joinViaHtml5=" + isHTML5Client
-	 	+ "&password=mp";
+	 	+ "&password=" + password;
 
 		return base_url_join + join_parameters + "&checksum="
 			+ checksum("join" + join_parameters + salt);
diff --git a/bbb-api-demo/src/main/webapp/demoHTML5.jsp b/bbb-api-demo/src/main/webapp/demoHTML5.jsp
index 7e95adc700f0b58dc64708ab873284ec6776fb44..e88eee94b3fe05194b7bd70ab08700f92d2e7119 100644
--- a/bbb-api-demo/src/main/webapp/demoHTML5.jsp
+++ b/bbb-api-demo/src/main/webapp/demoHTML5.jsp
@@ -88,39 +88,22 @@ if (request.getParameterMap().isEmpty()) {
 <%
 } else if (request.getParameter("action").equals("create")) {
 
-	//
-	// Got an action=create
-	//
-
 	String username = request.getParameter("username");
 
 	// set defaults and overwrite them if custom values exist
 	String meetingname = "Demo Meeting";
 	if (request.getParameter("meetingname") != null) {
-		meetingname =  request.getParameter("meetingname");
+		meetingname = request.getParameter("meetingname");
 	}
 
-	String defaultModeratorPassword = "mp";
-	String defaultAttendeePassword = "ap";
-	String defaultPassword = defaultAttendeePassword;
-
-	boolean isModerator = false;
+	Boolean isModerator = new Boolean(false);
+	Boolean isHTML5 = new Boolean(true);
+	Boolean isRecorded = new Boolean(true);
 	if (request.getParameter("isModerator") != null) {
 		isModerator = Boolean.parseBoolean(request.getParameter("isModerator"));
-		defaultPassword = defaultModeratorPassword;
-	}
-
-	String ip = BigBlueButtonURL.split("\\/bigbluebutton")[0];
-	String html5url = ip + "/html5client/join";
-
-	String meetingId = createMeeting( meetingname, null, defaultModeratorPassword, "Welcome moderator! (moderator only message)", defaultAttendeePassword, null, null );
-
-	// Check if we have an existing meeting
-	if( meetingId.startsWith("Error ")) {
-		meetingId = meetingname;
 	}
 
-	String joinURL = getJoinMeetingURL(username, meetingId, defaultPassword, html5url);
+	String joinURL = getJoinURLExtended(username, meetingname, isRecorded.toString(), null, null, null, isHTML5.toString(), isModerator.toString());
 
 	if (joinURL.startsWith("http://") || joinURL.startsWith("https://")) {
 %>
diff --git a/bbb-api-demo/src/main/webapp/demoHTML5Video.jsp b/bbb-api-demo/src/main/webapp/demoHTML5Video.jsp
index 0a4e3bd05f3ac50aec21334601546ef5de228459..e72be97275931cccffaef99d16fb4f00223922a3 100644
--- a/bbb-api-demo/src/main/webapp/demoHTML5Video.jsp
+++ b/bbb-api-demo/src/main/webapp/demoHTML5Video.jsp
@@ -87,7 +87,7 @@ if (request.getParameterMap().isEmpty()) {
 	metadata.put("html5autosharewebcam", "true");
 	metadata.put("html5hidepresentation", "true");
 
-	String joinURL = getJoinURLExtended(username, meetingname, "false", null, metadata, null, "true");
+	String joinURL = getJoinURLExtended(username, meetingname, "true", null, metadata, null, "true");
 
 	if (joinURL.startsWith("http://") || joinURL.startsWith("https://")) {
 %>