diff --git a/guacamole/pom.xml b/guacamole/pom.xml
index fb426e743..29b177aec 100644
--- a/guacamole/pom.xml
+++ b/guacamole/pom.xml
@@ -155,9 +155,9 @@
guacamole.js
- lib/jquery.js
- lib/angular.min.js
- lib/angular-module-shim.js
+ lib/jquery/jquery.js
+ lib/angular/angular.min.js
+ lib/angular-module-shim/angular-module-shim.js
lib/messageformat/messageformat.js
license.txt
guacamole-common-js/all.js
diff --git a/guacamole/src/main/webapp/lib/angular-module-shim.js b/guacamole/src/main/webapp/lib/angular-module-shim.js
deleted file mode 100644
index af62f1fba..000000000
--- a/guacamole/src/main/webapp/lib/angular-module-shim.js
+++ /dev/null
@@ -1,35 +0,0 @@
-
-/**
- * Workaround to make defining and retrieving angular modules easier and more intuitive.
- * https://gist.github.com/hiddentao/7300694
- */
-
-(function(angular) {
- var origMethod = angular.module;
-
- var alreadyRegistered = {};
-
- /**
- * Register/fetch a module.
- *
- * @param name {string} module name.
- * @param reqs {array} list of modules this module depends upon.
- * @param configFn {function} config function to run when module loads (only applied for the first call to create this module).
- * @returns {*} the created/existing module.
- */
- angular.module = function(name, reqs, configFn) {
- reqs = reqs || [];
- var module = null;
-
- if (alreadyRegistered[name]) {
- module = origMethod(name);
- module.requires.push.apply(module.requires, reqs);
- } else {
- module = origMethod(name, reqs, configFn);
- alreadyRegistered[name] = module;
- }
-
- return module;
- };
-
-})(angular);
diff --git a/guacamole/src/main/webapp/lib/angular-module-shim/LICENSE b/guacamole/src/main/webapp/lib/angular-module-shim/LICENSE
new file mode 100644
index 000000000..806ee6e34
--- /dev/null
+++ b/guacamole/src/main/webapp/lib/angular-module-shim/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Jed Richards
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/guacamole/src/main/webapp/lib/angular-module-shim/angular-module-shim.js b/guacamole/src/main/webapp/lib/angular-module-shim/angular-module-shim.js
new file mode 100644
index 000000000..fbd4a7df9
--- /dev/null
+++ b/guacamole/src/main/webapp/lib/angular-module-shim/angular-module-shim.js
@@ -0,0 +1,32 @@
+(function(angular) {
+
+ 'use strict';
+
+ if ( !angular ) {
+ throw new Error('angular-module-shim: Missing Angular');
+ }
+
+ var origFn = angular.module;
+ var hash = {};
+
+ angular.module = function(name,requires,configFn) {
+
+ var requires = requires || [];
+ var registered = hash[name];
+ var module;
+
+ if ( registered ) {
+ module = origFn(name);
+ module.requires.push.apply(module.requires,requires);
+ // Register the config function if it exists.
+ if (configFn) {
+ module.config(configFn);
+ }
+ } else {
+ hash[name] = true;
+ module = origFn(name,requires,configFn);
+ }
+
+ return module;
+ };
+})(window.angular);
diff --git a/guacamole/src/main/webapp/lib/angular-translate/LICENSE b/guacamole/src/main/webapp/lib/angular-translate/LICENSE
new file mode 100644
index 000000000..f3e753f87
--- /dev/null
+++ b/guacamole/src/main/webapp/lib/angular-translate/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) <2014>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/guacamole/src/main/webapp/lib/plugins/angular-translate-interpolation-messageformat.js b/guacamole/src/main/webapp/lib/angular-translate/angular-translate-interpolation-messageformat.js
similarity index 100%
rename from guacamole/src/main/webapp/lib/plugins/angular-translate-interpolation-messageformat.js
rename to guacamole/src/main/webapp/lib/angular-translate/angular-translate-interpolation-messageformat.js
diff --git a/guacamole/src/main/webapp/lib/plugins/angular-translate-loader-static-files.js b/guacamole/src/main/webapp/lib/angular-translate/angular-translate-loader-static-files.js
similarity index 100%
rename from guacamole/src/main/webapp/lib/plugins/angular-translate-loader-static-files.js
rename to guacamole/src/main/webapp/lib/angular-translate/angular-translate-loader-static-files.js
diff --git a/guacamole/src/main/webapp/lib/plugins/angular-translate.js b/guacamole/src/main/webapp/lib/angular-translate/angular-translate.js
similarity index 100%
rename from guacamole/src/main/webapp/lib/plugins/angular-translate.js
rename to guacamole/src/main/webapp/lib/angular-translate/angular-translate.js
diff --git a/guacamole/src/main/webapp/lib/angular/LICENSE b/guacamole/src/main/webapp/lib/angular/LICENSE
new file mode 100644
index 000000000..9ced33195
--- /dev/null
+++ b/guacamole/src/main/webapp/lib/angular/LICENSE
@@ -0,0 +1,22 @@
+The MIT License
+
+Copyright (c) 2010-2014 Google, Inc. http://angularjs.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
diff --git a/guacamole/src/main/webapp/lib/plugins/angular-cookies.js b/guacamole/src/main/webapp/lib/angular/angular-cookies.js
similarity index 100%
rename from guacamole/src/main/webapp/lib/plugins/angular-cookies.js
rename to guacamole/src/main/webapp/lib/angular/angular-cookies.js
diff --git a/guacamole/src/main/webapp/lib/plugins/angular-route.js b/guacamole/src/main/webapp/lib/angular/angular-route.js
similarity index 100%
rename from guacamole/src/main/webapp/lib/plugins/angular-route.js
rename to guacamole/src/main/webapp/lib/angular/angular-route.js
diff --git a/guacamole/src/main/webapp/lib/angular-touch.js b/guacamole/src/main/webapp/lib/angular/angular-touch.js
similarity index 100%
rename from guacamole/src/main/webapp/lib/angular-touch.js
rename to guacamole/src/main/webapp/lib/angular/angular-touch.js
diff --git a/guacamole/src/main/webapp/lib/angular.min.js b/guacamole/src/main/webapp/lib/angular/angular.min.js
similarity index 100%
rename from guacamole/src/main/webapp/lib/angular.min.js
rename to guacamole/src/main/webapp/lib/angular/angular.min.js
diff --git a/guacamole/src/main/webapp/lib/jquery/MIT-LICENSE.txt b/guacamole/src/main/webapp/lib/jquery/MIT-LICENSE.txt
new file mode 100644
index 000000000..cdd31b5c7
--- /dev/null
+++ b/guacamole/src/main/webapp/lib/jquery/MIT-LICENSE.txt
@@ -0,0 +1,21 @@
+Copyright 2014 jQuery Foundation and other contributors
+http://jquery.com/
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/guacamole/src/main/webapp/lib/jquery.js b/guacamole/src/main/webapp/lib/jquery/jquery.js
similarity index 100%
rename from guacamole/src/main/webapp/lib/jquery.js
rename to guacamole/src/main/webapp/lib/jquery/jquery.js
diff --git a/guacamole/src/main/webapp/lib/lodash/LICENSE.txt b/guacamole/src/main/webapp/lib/lodash/LICENSE.txt
new file mode 100644
index 000000000..49869bbab
--- /dev/null
+++ b/guacamole/src/main/webapp/lib/lodash/LICENSE.txt
@@ -0,0 +1,22 @@
+Copyright 2012-2013 The Dojo Foundation
+Based on Underscore.js 1.5.2, copyright 2009-2013 Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/guacamole/src/main/webapp/lib/lodash.js b/guacamole/src/main/webapp/lib/lodash/lodash.js
similarity index 100%
rename from guacamole/src/main/webapp/lib/lodash.js
rename to guacamole/src/main/webapp/lib/lodash/lodash.js
diff --git a/guacamole/src/main/webapp/lib/messageformat/LICENSE b/guacamole/src/main/webapp/lib/messageformat/LICENSE
new file mode 100644
index 000000000..ee7d6a54e
--- /dev/null
+++ b/guacamole/src/main/webapp/lib/messageformat/LICENSE
@@ -0,0 +1,14 @@
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ Version 2, December 2004
+
+ Copyright (C) 2004 Sam Hocevar
+
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
+