diff --git a/3rdparty b/3rdparty
index 48fdf111dfe4728a906002afccb97b8ad88b3f61..912a45c3458685a1105fba38a39a3a71c7348ed9 160000
--- a/3rdparty
+++ b/3rdparty
@@ -1 +1 @@
-Subproject commit 48fdf111dfe4728a906002afccb97b8ad88b3f61
+Subproject commit 912a45c3458685a1105fba38a39a3a71c7348ed9
diff --git a/bower.json b/bower.json
index 406878ca713a21cee806e8bb9a4932835ed0e3c9..b18078f6fc4413a529033d4f374133bced957450 100644
--- a/bower.json
+++ b/bower.json
@@ -21,6 +21,7 @@
     "select2": "3.4.8",
     "zxcvbn": "*",
     "snapjs": "2.0.0-rc1",
+    "strengthify": "*",
     "underscore": "1.6.0"
   }
 }
diff --git a/core/setup/controller.php b/core/setup/controller.php
index f5f05348fd12e9827b3a6d7971eb038a6f15e695..0722a2b13c3c7cd653a40430a34015d99de7e43d 100644
--- a/core/setup/controller.php
+++ b/core/setup/controller.php
@@ -57,8 +57,8 @@ class Controller {
 		);
 		$parameters = array_merge($defaults, $post);
 
-		\OC_Util::addScript( '3rdparty', 'strengthify/jquery.strengthify' );
-		\OC_Util::addStyle( '3rdparty', 'strengthify/strengthify' );
+		\OC_Util::addVendorScript('strengthify/jquery.strengthify');
+		\OC_Util::addVendorStyle('strengthify/strengthify');
 		\OC_Util::addScript('setup');
 		\OC_Template::printGuestPage('', 'installation', $parameters);
 	}
diff --git a/core/vendor/.gitignore b/core/vendor/.gitignore
index c2c71a145bafc05fcc69bac75a19252cbea8c900..e76afeb476d1b0e91766021cbfd7dfdff9fba87c 100644
--- a/core/vendor/.gitignore
+++ b/core/vendor/.gitignore
@@ -1,12 +1,16 @@
 test/
 src/
 .bower.json
+bower.json
 .gitignore
 .jshintrc
 .travis.yml
+CHANGELOG*
 Gemfile
 gruntfile.js
-README.md
+Makefile
+package.json
+README*
 
 # underscore
 underscore/**
@@ -17,20 +21,13 @@ underscore/**
 blueimp-md5/css
 blueimp-md5/js/*
 !blueimp-md5/js/md5.js
-blueimp-md5/.*
-blueimp-md5/*.json
 blueimp-md5/index.html
-blueimp-md5/Makefile
-blueimp-md5/README.md
-blueimp-md5/package.json
 
 # momentjs - ignore all files except the two listed below
 moment/benchmarks
 moment/locale
 moment/min/**
-moment/*.js*
-moment/*.md
-!moment/LICENSE
+moment/moment.js
 !moment/min/moment-with-locales.js
 
 # jquery
@@ -39,9 +36,7 @@ jquery/**
 !jquery/MIT-LICENSE.txt
 
 # jcrop
-jcrop/.bower.json
 jcrop/index.html
-jcrop/README.md
 jcrop/demos
 jcrop/css/jquery.Jcrop.min.css
 jcrop/js/**
@@ -71,4 +66,3 @@ snapjs/dist/2.0.0-rc1
 snapjs/dist/latest/snap.css
 snapjs/dist/latest/snap.min.js
 snapjs/scripts
-snapjs/*.json
diff --git a/core/vendor/strengthify/LICENSE b/core/vendor/strengthify/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..3c04738f78959f89892a1d86332c2832d7aa4d94
--- /dev/null
+++ b/core/vendor/strengthify/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 Morris Jobke
+
+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/core/vendor/strengthify/jquery.strengthify.js b/core/vendor/strengthify/jquery.strengthify.js
new file mode 100644
index 0000000000000000000000000000000000000000..8b62f6b2fe9740f48620093f64d86d48f5feec39
--- /dev/null
+++ b/core/vendor/strengthify/jquery.strengthify.js
@@ -0,0 +1,133 @@
+/**
+ * Strengthify - show the weakness of a password (uses zxcvbn for this)
+ * https://github.com/kabum/strengthify
+ *
+ * Version: 0.3
+ * Author: Morris Jobke (github.com/kabum)
+ *
+ * License:
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2013 Morris Jobke <morris.jobke@gmail.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.
+ */
+
+(function ($) {
+	$.fn.strengthify = function(options) {
+		var me = this
+
+		var defaults = {
+			zxcvbn: 'zxcvbn/zxcvbn.js',
+			titles: [
+				'Weakest',
+				'Weak',
+				'So-so',
+				'Good',
+				'Perfect'
+			]
+		}
+
+		var options = $.extend(defaults, options)
+
+		// add elements
+		$('.strengthify-wrapper')
+			.append('<div class="strengthify-bg" />')
+			.append('<div class="strengthify-container" />')
+			.append('<div class="strengthify-separator" style="left: 25%" />')
+			.append('<div class="strengthify-separator" style="left: 50%" />')
+			.append('<div class="strengthify-separator" style="left: 75%" />')
+
+		var oldDisplayState = $('.strengthify-wrapper').css('display')
+
+		$.ajax({
+			cache: true,
+			dataType: 'script',
+			url: options.zxcvbn
+		}).done(function() {
+			me.bind('keyup input', function() {
+				var password = $(this).val()
+
+				// hide strengthigy if no input is provided
+				var opacity = (password === '') ? 0 : 1
+				$('.strengthify-wrapper').children().css(
+					'opacity',
+					opacity
+				).css(
+					'-ms-filter',
+					'"progid:DXImageTransform.Microsoft.Alpha(Opacity=' + opacity * 100 + ')"'
+				)
+
+				// calculate result
+				var result = zxcvbn(password)
+
+				var css = ''
+				// style strengthify bar
+				// possible scores: 0-4
+				switch(result.score) {
+					case 0:
+					case 1:
+						css = 'password-bad';
+						break;
+					case 2:
+						css = 'password-medium';
+						break;
+					case 3:
+					case 4:
+						css = 'password-good';
+						break;
+				}
+
+				$('.strengthify-container').attr('class', css + ' strengthify-container')
+				// possible scores: 0-4
+				$('.strengthify-container').css(
+					'width',
+					// if score is '0' it will be changed to '1' to
+					// not hide strengthify if the password is extremely weak
+					((result.score == 0 ? 1 : result.score) * 25) + '%'
+				)
+				// set a title for the wrapper
+				$('.strengthify-wrapper').attr(
+					'title',
+					options.titles[result.score]
+				).tipsy({
+					trigger: 'manual',
+					opacity: opacity
+				}).tipsy(
+					'show'
+				)
+
+				if(opacity === 0) {
+					$('.strengthify-wrapper').tipsy(
+						'hide'
+					)
+				}
+
+				// reset state for empty string password
+				if(password === '') {
+					$('.strengthify-container').css('width', 0)
+				}
+
+			})
+		})
+
+		return me
+	};
+
+}(jQuery))
\ No newline at end of file
diff --git a/core/vendor/strengthify/strengthify.css b/core/vendor/strengthify/strengthify.css
new file mode 100644
index 0000000000000000000000000000000000000000..9340270ecfb47f83d40626b7f65bacd293e54c36
--- /dev/null
+++ b/core/vendor/strengthify/strengthify.css
@@ -0,0 +1,48 @@
+/**
+ * Strengthify - show the weakness of a password (uses zxcvbn for this)
+ * https://github.com/kabum/strengthify
+ * Version: 0.3
+ * License: The MIT License (MIT)
+ * Copyright (c) 2013 Morris Jobke <morris.jobke@gmail.com>
+ */
+
+.strengthify-wrapper > * {
+	-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
+	filter: alpha(opacity=0);
+	opacity: 0;
+	-webkit-transition:all .5s ease-in-out;
+	-moz-transition:all .5s ease-in-out;
+	transition:all .5s ease-in-out;
+}
+
+.strengthify-bg, .strengthify-container, .strengthify-wrapper, .strengthify-separator {
+	height: 3px;
+}
+
+.strengthify-bg, .strengthify-container {
+	display: block;
+	position: absolute;
+	width: 100%;
+}
+
+.strengthify-bg {
+	background-color: #BBB;
+}
+
+.strengthify-separator {
+	display: inline-block;
+	position: absolute;
+	background-color: #FFF;
+	width: 1px;
+	z-index: 10;
+}
+
+.password-bad {
+	background-color: #C33;
+}
+.password-medium {
+	background-color: #F80;
+}
+.password-good {
+	background-color: #3C3;
+}
\ No newline at end of file
diff --git a/settings/personal.php b/settings/personal.php
index 4c06eecd2232148d33f8159af03220a61bb7661b..9c27f77ccd351be9f3e3f2854bb54c3b73d9b25c 100644
--- a/settings/personal.php
+++ b/settings/personal.php
@@ -13,8 +13,8 @@ $certificateManager = \OC::$server->getCertificateManager();
 // Highlight navigation entry
 OC_Util::addScript( 'settings', 'personal' );
 OC_Util::addStyle( 'settings', 'settings' );
-OC_Util::addScript( '3rdparty', 'strengthify/jquery.strengthify' );
-OC_Util::addStyle( '3rdparty', 'strengthify/strengthify' );
+\OC_Util::addVendorScript('strengthify/jquery.strengthify');
+\OC_Util::addVendorStyle('strengthify/strengthify');
 \OC_Util::addScript('files', 'jquery.fileupload');
 if (\OC_Config::getValue('enable_avatars', true) === true) {
 	\OC_Util::addVendorScript('jcrop/js/jquery.Jcrop');