diff --git a/core/setup.php b/core/setup.php
new file mode 100644
index 0000000000000000000000000000000000000000..1c03e3397aff29cd356da67f3d2e032a22bb7b8c
--- /dev/null
+++ b/core/setup.php
@@ -0,0 +1,53 @@
+<?php
+
+// Check for autosetup:
+$autosetup_file = OC::$SERVERROOT."/config/autoconfig.php";
+if( file_exists( $autosetup_file )) {
+	OC_Log::write('core', 'Autoconfig file found, setting up owncloud...', OC_Log::INFO);
+	include $autosetup_file;
+	$_POST['install'] = 'true';
+	$_POST = array_merge ($_POST, $AUTOCONFIG);
+	unlink($autosetup_file);
+}
+
+OC_Util::addScript('setup');
+
+$hasSQLite = (is_callable('sqlite_open') or class_exists('SQLite3'));
+$hasMySQL = is_callable('mysql_connect');
+$hasPostgreSQL = is_callable('pg_connect');
+$hasOracle = is_callable('oci_connect');
+$datadir = OC_Config::getValue('datadirectory', OC::$SERVERROOT.'/data');
+
+// Test if  .htaccess is working
+$content = "deny from all";
+file_put_contents(OC::$SERVERROOT.'/data/.htaccess', $content);
+
+$opts = array(
+	'hasSQLite' => $hasSQLite,
+	'hasMySQL' => $hasMySQL,
+	'hasPostgreSQL' => $hasPostgreSQL,
+	'hasOracle' => $hasOracle,
+	'directory' => $datadir,
+	'secureRNG' => OC_Util::secureRNG_available(),
+	'htaccessWorking' => OC_Util::ishtaccessworking(),
+	'errors' => array(),
+);
+
+if(isset($_POST['install']) AND $_POST['install']=='true') {
+	// We have to launch the installation process :
+	$e = OC_Setup::install($_POST);
+	$errors = array('errors' => $e);
+
+	if(count($e) > 0) {
+		//OC_Template::printGuestPage("", "error", array("errors" => $errors));
+		$options = array_merge($_POST, $opts, $errors);
+		OC_Template::printGuestPage("", "installation", $options);
+	}
+	else {
+		header("Location: ".OC::$WEBROOT.'/');
+		exit();
+	}
+}
+else {
+	OC_Template::printGuestPage("", "installation", $opts);
+}
diff --git a/lib/base.php b/lib/base.php
index 5c3d3fb80cec1711bc12aabd6658aa013b147d63..baa384d102e625f26274427e2d2a11da2c10040f 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -477,17 +477,7 @@ class OC{
 	 */
 	public static function handleRequest() {
 		if (!OC_Config::getValue('installed', false)) {
-			// Check for autosetup:
-			$autosetup_file = OC::$SERVERROOT."/config/autoconfig.php";
-			if( file_exists( $autosetup_file )) {
-				OC_Log::write('core', 'Autoconfig file found, setting up owncloud...', OC_Log::INFO);
-				include $autosetup_file;
-				$_POST['install'] = 'true';
-				$_POST = array_merge ($_POST, $AUTOCONFIG);
-				unlink($autosetup_file);
-			}
-			OC_Util::addScript('setup');
-			require_once 'setup.php';
+			require_once 'core/setup.php';
 			exit();
 		}
 		// Handle WebDAV
diff --git a/lib/setup.php b/lib/setup.php
index 4e4a32e7362782eb52952de866382dbb92862497..579a1b523ce4453ce9ae11207f3d1d8bfd366f54 100644
--- a/lib/setup.php
+++ b/lib/setup.php
@@ -1,45 +1,5 @@
 <?php
 
-$hasSQLite = (is_callable('sqlite_open') or class_exists('SQLite3'));
-$hasMySQL = is_callable('mysql_connect');
-$hasPostgreSQL = is_callable('pg_connect');
-$hasOracle = is_callable('oci_connect');
-$datadir = OC_Config::getValue('datadirectory', OC::$SERVERROOT.'/data');
-
-// Test if  .htaccess is working
-$content = "deny from all";
-file_put_contents(OC::$SERVERROOT.'/data/.htaccess', $content);
-
-$opts = array(
-	'hasSQLite' => $hasSQLite,
-	'hasMySQL' => $hasMySQL,
-	'hasPostgreSQL' => $hasPostgreSQL,
-	'hasOracle' => $hasOracle,
-	'directory' => $datadir,
-	'secureRNG' => OC_Util::secureRNG_available(),
-	'htaccessWorking' => OC_Util::ishtaccessworking(),
-	'errors' => array(),
-);
-
-if(isset($_POST['install']) AND $_POST['install']=='true') {
-	// We have to launch the installation process :
-	$e = OC_Setup::install($_POST);
-	$errors = array('errors' => $e);
-
-	if(count($e) > 0) {
-		//OC_Template::printGuestPage("", "error", array("errors" => $errors));
-		$options = array_merge($_POST, $opts, $errors);
-		OC_Template::printGuestPage("", "installation", $options);
-	}
-	else {
-		header("Location: ".OC::$WEBROOT.'/');
-		exit();
-	}
-}
-else {
-	OC_Template::printGuestPage("", "installation", $opts);
-}
-
 class OC_Setup {
 	public static function install($options) {
 		$error = array();