diff --git a/core/setup/controller.php b/core/setup/controller.php
index 330de2537ac16458c4fa23d26b9a83c60bb02040..dfd7e0d8d968432a0c9059f9fff661a76d49b570 100644
--- a/core/setup/controller.php
+++ b/core/setup/controller.php
@@ -75,7 +75,7 @@ class Controller {
 
 		if(isset($post['install']) AND $post['install']=='true') {
 			// We have to launch the installation process :
-			$e = \OC_Setup::install($post);
+			$e = \OC\Setup::install($post);
 			$errors = array('errors' => $e);
 
 			if(count($e) > 0) {
@@ -145,7 +145,7 @@ class Controller {
 	 * in case of errors/warnings
 	 */
 	public function getSystemInfo() {
-		$setup = new \OC_Setup($this->config);
+		$setup = new \OC\Setup($this->config);
 		$databases = $setup->getSupportedDatabases();
 
 		$dataDir = $this->config->getSystemValue('datadirectory', \OC::$SERVERROOT.'/data');
@@ -159,7 +159,7 @@ class Controller {
 		$htAccessWorking = true;
 		if (is_dir($dataDir) && is_writable($dataDir)) {
 			// Protect data directory here, so we can test if the protection is working
-			\OC_Setup::protectDataDirectory();
+			\OC\Setup::protectDataDirectory();
 
 			try {
 				$htAccessWorking = \OC_Util::isHtaccessWorking();
diff --git a/lib/private/setup.php b/lib/private/setup.php
index 8a1c0815a2e0a4827eb016b86e964424b571c234..92463576845c7164965856ff51ce611bc74d496e 100644
--- a/lib/private/setup.php
+++ b/lib/private/setup.php
@@ -33,9 +33,14 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>
  *
  */
+
+namespace OC;
+
+use Exception;
+use OC_L10N;
 use OCP\IConfig;
 
-class OC_Setup {
+class Setup {
 	/** @var IConfig */
 	protected $config;
 
@@ -156,7 +161,7 @@ class OC_Setup {
 			$error[] = $l->t('Set an admin password.');
 		}
 		if(empty($options['directory'])) {
-			$options['directory'] = OC::$SERVERROOT."/data";
+			$options['directory'] = \OC::$SERVERROOT."/data";
 		}
 
 		if (!isset(self::$dbSetupClasses[$dbType])) {
@@ -194,7 +199,7 @@ class OC_Setup {
 			$trustedDomains = [$request->getInsecureServerHost()];
 		}
 
-		if (OC_Util::runningOnWindows()) {
+		if (\OC_Util::runningOnWindows()) {
 			$dataDir = rtrim(realpath($dataDir), '\\');
 		}
 
@@ -214,9 +219,9 @@ class OC_Setup {
 			'secret'			=> $secret,
 			'trusted_domains'	=> $trustedDomains,
 			'datadirectory'		=> $dataDir,
-			'overwrite.cli.url'	=> $request->getServerProtocol() . '://' . $request->getInsecureServerHost() . OC::$WEBROOT,
+			'overwrite.cli.url'	=> $request->getServerProtocol() . '://' . $request->getInsecureServerHost() . \OC::$WEBROOT,
 			'dbtype'			=> $dbType,
-			'version'			=> implode('.', OC_Util::getVersion()),
+			'version'			=> implode('.', \OC_Util::getVersion()),
 		]);
 
 		try {
@@ -237,27 +242,31 @@ class OC_Setup {
 		}
 
 		//create the user and group
+		$user =  null;
 		try {
-			OC_User::createUser($username, $password);
+			$user = \OC::$server->getUserManager()->createUser($username, $password);
+			if (!$user) {
+				$error[] = "User <$username> could not be created.";
+			}
 		} catch(Exception $exception) {
 			$error[] = $exception->getMessage();
 		}
 
 		if(count($error) == 0) {
-			$appConfig = \OC::$server->getAppConfig();
-			$appConfig->setValue('core', 'installedat', microtime(true));
-			$appConfig->setValue('core', 'lastupdatedat', microtime(true));
+			$config = \OC::$server->getConfig();
+			$config->setAppValue('core', 'installedat', microtime(true));
+			$config->setAppValue('core', 'lastupdatedat', microtime(true));
 
-			OC_Group::createGroup('admin');
-			OC_Group::addToGroup($username, 'admin');
-			OC_User::login($username, $password);
+			$group =\OC::$server->getGroupManager()->createGroup('admin');
+			$group->addUser($user);
+			\OC_User::login($username, $password);
 
 			//guess what this does
-			OC_Installer::installShippedApps();
+			\OC_Installer::installShippedApps();
 
 			// create empty file in data dir, so we can later find
 			// out that this is indeed an ownCloud data directory
-			file_put_contents(OC_Config::getValue('datadirectory', OC::$SERVERROOT.'/data').'/.ocdata', '');
+			file_put_contents($config->getSystemValue('datadirectory', \OC::$SERVERROOT.'/data').'/.ocdata', '');
 
 			// Update htaccess files for apache hosts
 			if (isset($_SERVER['SERVER_SOFTWARE']) && strstr($_SERVER['SERVER_SOFTWARE'], 'Apache')) {
@@ -266,7 +275,7 @@ class OC_Setup {
 			}
 
 			//and we are done
-			OC_Config::setValue('installed', true);
+			$config->setSystemValue('installed', true);
 		}
 
 		return $error;
@@ -276,7 +285,7 @@ class OC_Setup {
 	 * @return string Absolute path to htaccess
 	 */
 	private function pathToHtaccess() {
-		return OC::$SERVERROOT.'/.htaccess';
+		return \OC::$SERVERROOT.'/.htaccess';
 	}
 
 	/**
@@ -300,14 +309,14 @@ class OC_Setup {
 	 * @throws \OC\HintException If .htaccess does not include the current version
 	 */
 	public static function updateHtaccess() {
-		$setupHelper = new OC_Setup(\OC::$server->getConfig());
+		$setupHelper = new \OC\Setup(\OC::$server->getConfig());
 		if(!$setupHelper->isCurrentHtaccess()) {
 			throw new \OC\HintException('.htaccess file has the wrong version. Please upload the correct version. Maybe you forgot to replace it after updating?');
 		}
 
 		$content = "\n";
-		$content.= "ErrorDocument 403 ".OC::$WEBROOT."/core/templates/403.php\n";//custom 403 error page
-		$content.= "ErrorDocument 404 ".OC::$WEBROOT."/core/templates/404.php";//custom 404 error page
+		$content.= "ErrorDocument 403 ".\OC::$WEBROOT."/core/templates/403.php\n";//custom 403 error page
+		$content.= "ErrorDocument 404 ".\OC::$WEBROOT."/core/templates/404.php";//custom 404 error page
 		@file_put_contents($setupHelper->pathToHtaccess(), $content, FILE_APPEND); //suppress errors in case we don't have permissions for it
 	}
 
@@ -326,7 +335,7 @@ class OC_Setup {
 		$content.= "</ifModule>\n\n";
 		$content.= "# section for Apache 2.2 and 2.4\n";
 		$content.= "IndexIgnore *\n";
-		file_put_contents(OC_Config::getValue('datadirectory', OC::$SERVERROOT.'/data').'/.htaccess', $content);
-		file_put_contents(OC_Config::getValue('datadirectory', OC::$SERVERROOT.'/data').'/index.html', '');
+		file_put_contents(\OC_Config::getValue('datadirectory', \OC::$SERVERROOT.'/data').'/.htaccess', $content);
+		file_put_contents(\OC_Config::getValue('datadirectory', \OC::$SERVERROOT.'/data').'/index.html', '');
 	}
 }
diff --git a/lib/private/updater.php b/lib/private/updater.php
index c3de319ce970428805bcd5f793ae9573a95d85e3..f76630d411dc5a8488a37f5c8cc165ecb042f189 100644
--- a/lib/private/updater.php
+++ b/lib/private/updater.php
@@ -211,7 +211,7 @@ class Updater extends BasicEmitter {
 		// Update htaccess files for apache hosts
 		if (isset($_SERVER['SERVER_SOFTWARE']) && strstr($_SERVER['SERVER_SOFTWARE'], 'Apache')) {
 			try {
-				\OC_Setup::updateHtaccess();
+				\OC\Setup::updateHtaccess();
 			} catch (\Exception $e) {
 				throw new \Exception($e->getMessage());
 			}
diff --git a/lib/private/user.php b/lib/private/user.php
index 5d3152247ec262678a6f2b507e3f882004d32e0b..bd8f3f72db430037b0edd334a98d677d6835699b 100644
--- a/lib/private/user.php
+++ b/lib/private/user.php
@@ -187,7 +187,7 @@ class OC_User {
 	 * itself, not in its subclasses.
 	 *
 	 * Allowed characters in the username are: "a-z", "A-Z", "0-9" and "_.@-"
-	 * @deprecated Use \OC::$server->getUserManager->createUser($uid, $password)
+	 * @deprecated Use \OC::$server->getUserManager()->createUser($uid, $password)
 	 */
 	public static function createUser($uid, $password) {
 		return self::getManager()->createUser($uid, $password);
diff --git a/lib/private/util.php b/lib/private/util.php
index 37e68df9a7f7b8aecb44cbc526bb244a38f69e5c..8ffb9e35badec72ff0d293d5e6f0dfcf4bf90784 100644
--- a/lib/private/util.php
+++ b/lib/private/util.php
@@ -550,7 +550,7 @@ class OC_Util {
 		}
 
 		$webServerRestart = false;
-		$setup = new OC_Setup($config);
+		$setup = new OC\Setup($config);
 		$availableDatabases = $setup->getSupportedDatabases();
 		if (empty($availableDatabases)) {
 			$errors[] = array(
diff --git a/tests/lib/setup.php b/tests/lib/setup.php
index a221943c016a2c0f41e5fbdb46e3f3c613df4b77..db6f0e7a05ff2c01d1e67955938c3928c8c64ea5 100644
--- a/tests/lib/setup.php
+++ b/tests/lib/setup.php
@@ -12,14 +12,14 @@ class Test_OC_Setup extends \Test\TestCase {
 
 	/** @var IConfig */
 	protected $config;
-	/** @var \OC_Setup */
+	/** @var \OC\Setup */
 	protected $setupClass;
 
 	protected function setUp() {
 		parent::setUp();
 
 		$this->config = $this->getMock('\OCP\IConfig');
-		$this->setupClass = $this->getMock('\OC_Setup', ['class_exists', 'is_callable'], [$this->config]);
+		$this->setupClass = $this->getMock('\OC\Setup', ['class_exists', 'is_callable'], [$this->config]);
 	}
 
 	public function testGetSupportedDatabasesWithOneWorking() {
@@ -115,4 +115,4 @@ class Test_OC_Setup extends \Test\TestCase {
 		);
 		$this->assertTrue($result);
 	}
-}
\ No newline at end of file
+}