diff --git a/.classpath b/.classpath
index 3b00822..d531303 100644
--- a/.classpath
+++ b/.classpath
@@ -112,7 +112,7 @@
 	<classpathentry kind="lib" path="ext/platform-3.4.0.jar" sourcepath="ext/src/platform-3.4.0.jar"/>
 	<classpathentry kind="lib" path="ext/mockito-core-1.10.19.jar" sourcepath="ext/src/mockito-core-1.10.19.jar"/>
 	<classpathentry kind="lib" path="ext/objenesis-2.1.jar" sourcepath="ext/src/objenesis-2.1.jar"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
 		<attributes>
 			<attribute name="maven.pomderived" value="true"/>
 		</attributes>
diff --git a/src/main/java/com/gitblit/wicket/ng/NgController.java b/src/main/java/com/gitblit/wicket/ng/NgController.java
index 648a12d..65ba78c 100644
--- a/src/main/java/com/gitblit/wicket/ng/NgController.java
+++ b/src/main/java/com/gitblit/wicket/ng/NgController.java
@@ -17,13 +17,16 @@
 
 import java.text.MessageFormat;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.wicket.Component;
 import org.apache.wicket.behavior.Behavior;
+import org.apache.wicket.markup.head.HeaderItem;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.request.resource.PackageResourceReference;
+import org.apache.wicket.resource.JQueryResourceReference;
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
@@ -56,7 +59,16 @@
 	@Override
 	public void renderHead(Component component, IHeaderResponse response) {
 		// add Google AngularJS reference
-		response.render(JavaScriptHeaderItem.forReference(new PackageResourceReference(NgController.class, "angular.js")));
+		response.render(JavaScriptHeaderItem.forReference(new PackageResourceReference(NgController.class, "angular.js"){
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public List<HeaderItem> getDependencies() {
+				List<HeaderItem> deps = super.getDependencies();
+				deps.add(JavaScriptHeaderItem.forReference(JQueryResourceReference.get()));
+				return deps;
+			}
+		}));
 
 		Gson gson = new GsonBuilder().create();
 
@@ -71,7 +83,7 @@
 		}
 		line(sb, "}");
 
-		response.render(JavaScriptHeaderItem.forScript(sb.toString(), "angularController"));
+		response.render(JavaScriptHeaderItem.forScript(sb.toString(), "angularController-"+name));
 	}
 
 	private void line(StringBuilder sb, String line) {
diff --git a/src/main/java/com/gitblit/wicket/pages/BasePage.html b/src/main/java/com/gitblit/wicket/pages/BasePage.html
index fe9cc48..9b02698 100644
--- a/src/main/java/com/gitblit/wicket/pages/BasePage.html
+++ b/src/main/java/com/gitblit/wicket/pages/BasePage.html
@@ -10,6 +10,7 @@
 		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
 		<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    		<title wicket:id="title">[page title]</title>
+   		
 		<link rel="icon" href="gitblt-favicon.png" type="image/png" />
 		<link rel="stylesheet" href="bootstrap/css/bootstrap.css"/>
 		<link rel="stylesheet" href="bootstrap/css/iconic.css"/>
@@ -48,7 +49,6 @@
 		</style>
 		
 		<!-- Include scripts at end for faster page loading -->
-<!-- 		<script type="text/javascript" src="bootstrap/js/jquery.js"></script> -->
 		<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>		
 		<wicket:container wicket:id="bottomScripts"></wicket:container>
 	</body>
diff --git a/src/main/java/com/gitblit/wicket/pages/BasePage.java b/src/main/java/com/gitblit/wicket/pages/BasePage.java
index 0c35bb4..51e671c 100644
--- a/src/main/java/com/gitblit/wicket/pages/BasePage.java
+++ b/src/main/java/com/gitblit/wicket/pages/BasePage.java
@@ -40,8 +40,10 @@
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.resource.ContextRelativeResourceReference;
 import org.apache.wicket.request.resource.JavaScriptResourceReference;
+import org.apache.wicket.resource.JQueryResourceReference;
 import org.apache.wicket.markup.head.CssHeaderItem;
 import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.link.ExternalLink;
 import org.apache.wicket.markup.html.panel.FeedbackPanel;
@@ -67,6 +69,7 @@
 import com.gitblit.wicket.GitBlitWebApp;
 import com.gitblit.wicket.GitBlitWebSession;
 import com.gitblit.wicket.WicketUtils;
+import com.gitblit.wicket.resources.bootstrap.Bootstrap;
 
 public abstract class BasePage extends SessionPage {
 
@@ -96,9 +99,10 @@
 	@Override
 	public void renderHead(IHeaderResponse response) {
 		super.renderHead(response);
+		response.render(JavaScriptHeaderItem.forReference(JQueryResourceReference.get()));
+		
 		if (app().settings().getBoolean(Keys.web.useResponsiveLayout, true)) {
-			response.render(CssHeaderItem.forReference(
-					new ContextRelativeResourceReference("/bootstrap/css/bootstrap-responsive.css", false)));
+			response.render(CssHeaderItem.forReference(Application.get().getSharedResources().get(Bootstrap.BOOTSTRAP_RESPONSIVE_CSS_RESOURCE)));
 		}
 		if (app().settings().getBoolean(Keys.web.hideHeader, false)) {
 			response.render(CssHeaderItem.forReference(new ContextRelativeResourceReference("/hideheader.css", false)));
diff --git a/src/main/java/com/gitblit/wicket/resources/bootstrap/Bootstrap.java b/src/main/java/com/gitblit/wicket/resources/bootstrap/Bootstrap.java
index f675af6..0d0778d 100644
--- a/src/main/java/com/gitblit/wicket/resources/bootstrap/Bootstrap.java
+++ b/src/main/java/com/gitblit/wicket/resources/bootstrap/Bootstrap.java
@@ -1,14 +1,27 @@
 package com.gitblit.wicket.resources.bootstrap;
 
+import java.util.List;
+
+import org.apache.wicket.markup.head.HeaderItem;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.request.resource.CssPackageResource;
+import org.apache.wicket.request.resource.IResource;
 import org.apache.wicket.request.resource.PackageResourceReference;
+import org.apache.wicket.request.resource.SharedResourceReference;
+import org.apache.wicket.resource.JQueryResourceReference;
 
 
 public class Bootstrap {
+	
+	public static final String BOOTSTRAP_RESPONSIVE_CSS_RESOURCE = "bootstrap:responsiveCss";
 
 	public static void install(WebApplication app) {
 		app.mountResource("/bootstrap/css/bootstrap.css", new PackageResourceReference(Bootstrap.class, "css/bootstrap.css"));
-		app.mountResource("/bootstrap/css/bootstrap-responsive.css", new PackageResourceReference(Bootstrap.class, "css/bootstrap-responsive.css"));
+
+		app.getSharedResources().add(BOOTSTRAP_RESPONSIVE_CSS_RESOURCE, new CssPackageResource(Bootstrap.class, "css/bootstrap-responsive.css", null, null, null));
+		app.mountResource("/bootstrap/css/bootstrap-responsive.css", app.getSharedResources().get(BOOTSTRAP_RESPONSIVE_CSS_RESOURCE));
+
 		app.mountResource("/bootstrap/css/iconic.css", new PackageResourceReference(Bootstrap.class, "css/iconic.css"));
 
 		app.mountResource("/bootstrap/font/iconic_fill.afm", new PackageResourceReference(Bootstrap.class, "font/iconic_fill.afm"));
@@ -30,7 +43,16 @@
 		app.mountResource("/bootstrap/img/glyphicons-halflings-white.png", new PackageResourceReference(Bootstrap.class, "img/glyphicons-halflings-white.png"));
 		app.mountResource("/bootstrap/img/glyphicons-halflings.png", new PackageResourceReference(Bootstrap.class, "img/glyphicons-halflings.png"));
 
-		app.mountResource("/bootstrap/js/bootstrap.js", new PackageResourceReference(Bootstrap.class, "js/bootstrap.js"));
+		app.mountResource("/bootstrap/js/bootstrap.js", new PackageResourceReference(Bootstrap.class, "js/bootstrap.js"){
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public List<HeaderItem> getDependencies() {
+				List<HeaderItem> deps = super.getDependencies();
+				deps.add(JavaScriptHeaderItem.forReference(JQueryResourceReference.get()));
+				return deps;
+			}
+		});
 	}
 
 }
