diff --git a/core/command/db/converttype.php b/core/command/db/converttype.php
index 2188b1135bbc354528a7b97fee8af5dad81543c5..617910b3a9051825584f09a5dc4d9f907323fc29 100644
--- a/core/command/db/converttype.php
+++ b/core/command/db/converttype.php
@@ -10,7 +10,7 @@
 
 namespace OC\Core\Command\Db;
 
-use OC\Config;
+use \OCP\IConfig;
 use OC\DB\Connection;
 use OC\DB\ConnectionFactory;
 
@@ -22,7 +22,7 @@ use Symfony\Component\Console\Output\OutputInterface;
 
 class ConvertType extends Command {
 	/**
-	 * @var \OC\Config
+	 * @var \OCP\IConfig
 	 */
 	protected $config;
 
@@ -32,10 +32,10 @@ class ConvertType extends Command {
 	protected $connectionFactory;
 
 	/**
-	 * @param \OC\Config $config
+	 * @param \OCP\IConfig $config
 	 * @param \OC\DB\ConnectionFactory $connectionFactory
 	 */
-	public function __construct(Config $config, ConnectionFactory $connectionFactory) {
+	public function __construct(IConfig $config, ConnectionFactory $connectionFactory) {
 		$this->config = $config;
 		$this->connectionFactory = $connectionFactory;
 		parent::__construct();
@@ -104,7 +104,7 @@ class ConvertType extends Command {
 				'Converting to Microsoft SQL Server (mssql) is currently not supported.'
 			);
 		}
-		if ($type === $this->config->getValue('dbtype', '')) {
+		if ($type === $this->config->getSystemValue('dbtype', '')) {
 			throw new \InvalidArgumentException(sprintf(
 				'Can not convert from %1$s to %1$s.',
 				$type
@@ -209,7 +209,7 @@ class ConvertType extends Command {
 			'user' => $input->getArgument('username'),
 			'password' => $input->getOption('password'),
 			'dbname' => $input->getArgument('database'),
-			'tablePrefix' => $this->config->getValue('dbtableprefix', 'oc_'),
+			'tablePrefix' => $this->config->getSystemValue('dbtableprefix', 'oc_'),
 		);
 		if ($input->getOption('port')) {
 			$connectionParams['port'] = $input->getOption('port');
@@ -256,7 +256,7 @@ class ConvertType extends Command {
 	}
 
 	protected function convertDB(Connection $fromDB, Connection $toDB, array $tables, InputInterface $input, OutputInterface $output) {
-		$this->config->setValue('maintenance', true);
+		$this->config->setSystemValue('maintenance', true);
 		try {
 			// copy table rows
 			foreach($tables as $table) {
@@ -270,10 +270,10 @@ class ConvertType extends Command {
 			// save new database config
 			$this->saveDBInfo($input);
 		} catch(\Exception $e) {
-			$this->config->setValue('maintenance', false);
+			$this->config->setSystemValue('maintenance', false);
 			throw $e;
 		}
-		$this->config->setValue('maintenance', false);
+		$this->config->setSystemValue('maintenance', false);
 	}
 
 	protected function saveDBInfo(InputInterface $input) {
@@ -286,10 +286,10 @@ class ConvertType extends Command {
 			$dbhost .= ':'.$input->getOption('port');
 		}
 
-		$this->config->setValue('dbtype', $type);
-		$this->config->setValue('dbname', $dbname);
-		$this->config->setValue('dbhost', $dbhost);
-		$this->config->setValue('dbuser', $username);
-		$this->config->setValue('dbpassword', $password);
+		$this->config->setSystemValue('dbtype', $type);
+		$this->config->setSystemValue('dbname', $dbname);
+		$this->config->setSystemValue('dbhost', $dbhost);
+		$this->config->setSystemValue('dbuser', $username);
+		$this->config->setSystemValue('dbpassword', $password);
 	}
 }
diff --git a/core/command/maintenance/mode.php b/core/command/maintenance/mode.php
index f26a11384a88a2c39c893ffc188118cb28f24add..f48a9d012c4cab5f77cb1122356211c7a285c2f6 100644
--- a/core/command/maintenance/mode.php
+++ b/core/command/maintenance/mode.php
@@ -9,7 +9,7 @@
 
 namespace OC\Core\Command\Maintenance;
 
-use OC\Config;
+use \OCP\IConfig;
 
 use Symfony\Component\Console\Command\Command;
 use Symfony\Component\Console\Input\InputInterface;
@@ -18,9 +18,10 @@ use Symfony\Component\Console\Output\OutputInterface;
 
 class Mode extends Command {
 
+	/** @var IConfig */
 	protected $config;
 
-	public function __construct(Config $config) {
+	public function __construct(IConfig $config) {
 		$this->config = $config;
 		parent::__construct();
 	}
@@ -45,13 +46,13 @@ class Mode extends Command {
 
 	protected function execute(InputInterface $input, OutputInterface $output) {
 		if ($input->getOption('on')) {
-			$this->config->setValue('maintenance', true);
+			$this->config->setSystemValue('maintenance', true);
 			$output->writeln('Maintenance mode enabled');
 		} elseif ($input->getOption('off')) {
-			$this->config->setValue('maintenance', false);
+			$this->config->setSystemValue('maintenance', false);
 			$output->writeln('Maintenance mode disabled');
 		} else {
-			if ($this->config->getValue('maintenance', false)) {
+			if ($this->config->getSystemValue('maintenance', false)) {
 				$output->writeln('Maintenance mode is currently enabled');
 			} else {
 				$output->writeln('Maintenance mode is currently disabled');
diff --git a/core/command/maintenance/repair.php b/core/command/maintenance/repair.php
index 7c0cf71d3b611af99a618259023e6db00d98903b..bf94b2647ceb6349e6ed931d5b06a5403f756ed2 100644
--- a/core/command/maintenance/repair.php
+++ b/core/command/maintenance/repair.php
@@ -17,12 +17,14 @@ class Repair extends Command {
 	 * @var \OC\Repair $repair
 	 */
 	protected $repair;
+	/** @var \OCP\IConfig */
+	protected $config;
 
 	/**
 	 * @param \OC\Repair $repair
-	 * @param \OC\Config $config
+	 * @param \OCP\IConfig $config
 	 */
-	public function __construct(\OC\Repair $repair, \OC\Config $config) {
+	public function __construct(\OC\Repair $repair, \OCP\IConfig $config) {
 		$this->repair = $repair;
 		$this->config = $config;
 		parent::__construct();
@@ -35,8 +37,8 @@ class Repair extends Command {
 	}
 
 	protected function execute(InputInterface $input, OutputInterface $output) {
-		$maintenanceMode = $this->config->getValue('maintenance', false);
-		$this->config->setValue('maintenance', true);
+		$maintenanceMode = $this->config->getSystemValue('maintenance', false);
+		$this->config->setSystemValue('maintenance', true);
 
 		$this->repair->listen('\OC\Repair', 'step', function ($description) use ($output) {
 			$output->writeln(' - ' . $description);
@@ -50,6 +52,6 @@ class Repair extends Command {
 
 		$this->repair->run();
 
-		$this->config->setValue('maintenance', $maintenanceMode);
+		$this->config->setSystemValue('maintenance', $maintenanceMode);
 	}
 }
diff --git a/core/register_command.php b/core/register_command.php
index c5d9b6e342d91b7d3fc9c05eed9175f84a1d5111..8f79473ced889631c0ab0aa0e2c3996c3f61abdb 100644
--- a/core/register_command.php
+++ b/core/register_command.php
@@ -11,14 +11,14 @@ $repair = new \OC\Repair(\OC\Repair::getRepairSteps());
 /** @var $application Symfony\Component\Console\Application */
 $application->add(new OC\Core\Command\Status);
 $application->add(new OC\Core\Command\Db\GenerateChangeScript());
-$application->add(new OC\Core\Command\Db\ConvertType(OC_Config::getObject(), new \OC\DB\ConnectionFactory()));
+$application->add(new OC\Core\Command\Db\ConvertType(\OC::$server->getConfig(), new \OC\DB\ConnectionFactory()));
 $application->add(new OC\Core\Command\Upgrade(\OC::$server->getConfig()));
 $application->add(new OC\Core\Command\Maintenance\SingleUser());
-$application->add(new OC\Core\Command\Maintenance\Mode(OC_Config::getObject()));
+$application->add(new OC\Core\Command\Maintenance\Mode(\OC::$server->getConfig()));
 $application->add(new OC\Core\Command\App\Disable());
 $application->add(new OC\Core\Command\App\Enable());
 $application->add(new OC\Core\Command\App\ListApps());
-$application->add(new OC\Core\Command\Maintenance\Repair($repair, OC_Config::getObject()));
+$application->add(new OC\Core\Command\Maintenance\Repair($repair, \OC::$server->getConfig()));
 $application->add(new OC\Core\Command\User\Report());
 $application->add(new OC\Core\Command\User\ResetPassword(\OC::$server->getUserManager()));
 $application->add(new OC\Core\Command\User\LastSeen());
diff --git a/lib/private/db/mdb2schemamanager.php b/lib/private/db/mdb2schemamanager.php
index 632e320576c270318fdf78468f30103b34e70c79..78267094d0ee9989e5594aeb2b61a552e0f631d9 100644
--- a/lib/private/db/mdb2schemamanager.php
+++ b/lib/private/db/mdb2schemamanager.php
@@ -49,7 +49,7 @@ class MDB2SchemaManager {
 	 * TODO: write more documentation
 	 */
 	public function createDbFromStructure($file) {
-		$schemaReader = new MDB2SchemaReader(\OC_Config::getObject(), $this->conn->getDatabasePlatform());
+		$schemaReader = new MDB2SchemaReader(\OC::$server->getConfig(), $this->conn->getDatabasePlatform());
 		$toSchema = $schemaReader->loadSchemaFromFile($file);
 		return $this->executeSchemaChange($toSchema);
 	}
@@ -83,7 +83,7 @@ class MDB2SchemaManager {
 	 */
 	private function readSchemaFromFile($file) {
 		$platform = $this->conn->getDatabasePlatform();
-		$schemaReader = new MDB2SchemaReader(\OC_Config::getObject(), $platform);
+		$schemaReader = new MDB2SchemaReader(\OC::$server->getConfig(), $platform);
 		return $schemaReader->loadSchemaFromFile($file);
 	}
 
@@ -131,7 +131,7 @@ class MDB2SchemaManager {
 	 * @param string $file the xml file describing the tables
 	 */
 	public function removeDBStructure($file) {
-		$schemaReader = new MDB2SchemaReader(\OC_Config::getObject(), $this->conn->getDatabasePlatform());
+		$schemaReader = new MDB2SchemaReader(\OC::$server->getConfig(), $this->conn->getDatabasePlatform());
 		$fromSchema = $schemaReader->loadSchemaFromFile($file);
 		$toSchema = clone $fromSchema;
 		/** @var $table \Doctrine\DBAL\Schema\Table */
diff --git a/lib/private/db/mdb2schemareader.php b/lib/private/db/mdb2schemareader.php
index 288eef5cda0159857d1cdd32724eb4a92b4a8a98..7dd4168fb6e693469651ec8d968ea8a51b004c1c 100644
--- a/lib/private/db/mdb2schemareader.php
+++ b/lib/private/db/mdb2schemareader.php
@@ -8,6 +8,9 @@
 
 namespace OC\DB;
 
+use Doctrine\DBAL\Platforms\AbstractPlatform;
+use OCP\IConfig;
+
 class MDB2SchemaReader {
 	/**
 	 * @var string $DBNAME
@@ -25,13 +28,13 @@ class MDB2SchemaReader {
 	protected $platform;
 
 	/**
-	 * @param \OC\Config $config
+	 * @param \OCP\IConfig $config
 	 * @param \Doctrine\DBAL\Platforms\AbstractPlatform $platform
 	 */
-	public function __construct($config, $platform) {
+	public function __construct(IConfig $config, AbstractPlatform $platform) {
 		$this->platform = $platform;
-		$this->DBNAME = $config->getValue('dbname', 'owncloud');
-		$this->DBTABLEPREFIX = $config->getValue('dbtableprefix', 'oc_');
+		$this->DBNAME = $config->getSystemValue('dbname', 'owncloud');
+		$this->DBTABLEPREFIX = $config->getSystemValue('dbtableprefix', 'oc_');
 	}
 
 	/**
diff --git a/lib/private/legacy/config.php b/lib/private/legacy/config.php
index 13ff0dbe0404dc37bd0760bd02fbbd02b2707df6..7b7112042563539610ea0bcb1a5c0e9a118feaf6 100644
--- a/lib/private/legacy/config.php
+++ b/lib/private/legacy/config.php
@@ -22,14 +22,6 @@ class OC_Config {
 	/** @var \OC\Config */
 	public static $object;
 
-	/**
-	 * Returns the config instance
-	 * @return \OC\Config
-	 */
-	public static function getObject() {
-		return self::$object;
-	}
-
 	/**
 	 * Lists all available config keys
 	 * @return array an array of key names