diff --git a/interface/web/tools/form/user_settings.tform.php b/interface/web/tools/form/user_settings.tform.php
index 7daa1a7b84989713bc00186430b18c798e02ee04..a696d7533944348113cf550ab9265b7fb31a8eda 100644
--- a/interface/web/tools/form/user_settings.tform.php
+++ b/interface/web/tools/form/user_settings.tform.php
@@ -92,6 +92,46 @@ while ($file = @readdir($handle)) {
 		}
 	}
 }
+//* Pick out modules
+//* TODO: limit to activated modules of the user
+$modules_list = array();
+if($_SESSION["s"]["user"]["typ"] == 'admin') {
+	$handle = @opendir(ISPC_WEB_PATH);
+	while ($file = @readdir($handle)) {
+		if ($file != '.' && $file != '..') {
+			if(@is_dir(ISPC_WEB_PATH."/$file")) {
+				if(is_file(ISPC_WEB_PATH."/$file/lib/module.conf.php") and $file != 'login' && $file != 'designer' && $file != 'mailuser') {
+					$modules_list[$file] = $file;
+				}
+			}
+		}
+	}
+} else {
+	$tmp = $app->db->queryOneRecord("SELECT * FROM sys_user where username = ?", $_SESSION["s"]["user"]['username']);
+	$modules = $tmp['modules'];
+	//$modules = $conf['interface_modules_enabled'];
+	if($_SESSION["s"]["user"]["typ"] != 'admin' && $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
+		$modules .= ',client';
+	}
+	$tmp = explode(',', $modules);
+	foreach($tmp as $m) {
+		$modules_list[$m] = $m;
+	}
+}
+
+//* Load themes
+$themes_list = array();
+$handle = @opendir(ISPC_THEMES_PATH);
+while ($file = @readdir($handle)) {
+	if (substr($file, 0, 1) != '.') {
+		if(@is_dir(ISPC_THEMES_PATH."/$file")) {
+			if(!file_exists(ISPC_THEMES_PATH."/$file/ispconfig_version") || (@file_exists(ISPC_THEMES_PATH."/$file/ispconfig_version") && trim(@file_get_contents(ISPC_THEMES_PATH."/$file/ispconfig_version")) == ISPC_APP_VERSION)) {
+				$themes_list[$file] = $file;
+			}
+		}
+	}
+}
+
 
 $form['tabs']['users'] = array (
 	'title'  => 'Settings',
@@ -141,6 +181,44 @@ $form['tabs']['users'] = array (
 			'maxlength' => '2',
 			'rows'  => '',
 			'cols'  => ''
+		),
+		'startmodule' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'SELECT',
+			'validators' => array (  0 => array (    'type' => 'NOTEMPTY',
+					'errmsg'=> 'startmodule_empty'),
+				1 => array (    'type' => 'REGEX',
+					'regex' => '/^[a-z0-9\_]{0,64}$/',
+					'errmsg'=> 'startmodule_regex'),
+			),
+			'regex'  => '',
+			'errmsg' => '',
+			'default' => '',
+			'value'  => $modules_list,
+			'separator' => '',
+			'width'  => '30',
+			'maxlength' => '255',
+			'rows'  => '',
+			'cols'  => ''
+		),
+		'app_theme' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'SELECT',
+			'validators' => array (  0 => array (    'type' => 'NOTEMPTY',
+					'errmsg'=> 'app_theme_empty'),
+				1 => array (    'type' => 'REGEX',
+					'regex' => '/^[a-z0-9\_]{0,64}$/',
+					'errmsg'=> 'app_theme_regex'),
+			),
+			'regex' => '',
+			'errmsg' => '',
+			'default' => 'default',
+			'value' => $themes_list,
+			'separator' => '',
+			'width' => '30',
+			'maxlength' => '255',
+			'rows' => '',
+			'cols' => ''
 		)
 		//#################################
 		// ENDE Datenbankfelder
diff --git a/interface/web/tools/lib/lang/ar_usersettings.lng b/interface/web/tools/lib/lang/ar_usersettings.lng
index 4ac506ab77c1d084eb975ff864fabc0ffb2ddfd7..c05b94e76e77b6f2c2548b8f3dc9607ba91d228f 100644
--- a/interface/web/tools/lib/lang/ar_usersettings.lng
+++ b/interface/web/tools/lib/lang/ar_usersettings.lng
@@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
+$wb['language_txt'] = 'Language';
+$wb['startmodule_txt'] = 'Startmodule';
+$wb['app_theme_txt'] = 'Design';
 ?>
diff --git a/interface/web/tools/lib/lang/bg_usersettings.lng b/interface/web/tools/lib/lang/bg_usersettings.lng
index 838053f5637682cf67fa9987a58e896ac325c5f4..c30dcf37019f205569a250bd4addd21cf6961e6a 100644
--- a/interface/web/tools/lib/lang/bg_usersettings.lng
+++ b/interface/web/tools/lib/lang/bg_usersettings.lng
@@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
+$wb['language_txt'] = 'Language';
+$wb['startmodule_txt'] = 'Startmodule';
+$wb['app_theme_txt'] = 'Design';
 ?>
diff --git a/interface/web/tools/lib/lang/br_usersettings.lng b/interface/web/tools/lib/lang/br_usersettings.lng
index cb3ae2dc4f82eed3915a33c5e4a10d53ba5d423d..e254e81a4f3005f3de39a18410d6af66b72f169e 100644
--- a/interface/web/tools/lib/lang/br_usersettings.lng
+++ b/interface/web/tools/lib/lang/br_usersettings.lng
@@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Gerar Senha';
 $wb['repeat_password_txt'] = 'Repetir Senha';
 $wb['password_mismatch_txt'] = 'As senhas não coincidem.';
 $wb['password_match_txt'] = 'As senhas coincidem.';
+$wb['language_txt'] = 'Idioma';
+$wb['startmodule_txt'] = 'Módulo Inicial';
+$wb['app_theme_txt'] = 'Tema';
 ?>
diff --git a/interface/web/tools/lib/lang/ca_usersettings.lng b/interface/web/tools/lib/lang/ca_usersettings.lng
index fa40272aa08c094150913e5a3194e2cda2356128..4705660b9e1489cdd8fdcdaadd22561a4892d410 100644
--- a/interface/web/tools/lib/lang/ca_usersettings.lng
+++ b/interface/web/tools/lib/lang/ca_usersettings.lng
@@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Générer mot de passe';
 $wb['repeat_password_txt'] = 'Retaper le mot de passe';
 $wb['password_mismatch_txt'] = 'Les mots de passe ne correspondent pas.';
 $wb['password_match_txt'] = 'Les mots de passe correspondent.';
+$wb['language_txt'] = 'Language';
+$wb['startmodule_txt'] = 'Page d\'accueil';
+$wb['app_theme_txt'] = 'Interface';
 ?>
diff --git a/interface/web/tools/lib/lang/cz_usersettings.lng b/interface/web/tools/lib/lang/cz_usersettings.lng
index ab76b2261ddba6e3de82efe75c06f8472e4c07fb..f447299e0883850364fd41fd65f986f55ab5cf20 100644
--- a/interface/web/tools/lib/lang/cz_usersettings.lng
+++ b/interface/web/tools/lib/lang/cz_usersettings.lng
@@ -9,4 +9,7 @@ $wb['repeat_password_txt'] = 'Opakujte heslo';
 $wb['password_mismatch_txt'] = 'Hesla se neshodují.';
 $wb['password_match_txt'] = 'Hesla se shodují.';
 $wb['password_txt'] = 'Heslo';
+$wb['language_txt'] = 'Jazyk';
+$wb['startmodule_txt'] = 'Výchozí modul po přihlášení';
+$wb['app_theme_txt'] = 'Výchozí grafické téma';
 ?>
diff --git a/interface/web/tools/lib/lang/de_usersettings.lng b/interface/web/tools/lib/lang/de_usersettings.lng
index c643d38ff4e49bd5ba909380cf4af702715de985..dd5fefffae16a756fc596ae7566cedefe27d495f 100644
--- a/interface/web/tools/lib/lang/de_usersettings.lng
+++ b/interface/web/tools/lib/lang/de_usersettings.lng
@@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Passwort erzeugen';
 $wb['repeat_password_txt'] = 'Passwort wiederholen';
 $wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
 $wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
+$wb['language_txt'] = 'Sprache';
+$wb['startmodule_txt'] = 'Startmodul';
+$wb['app_theme_txt'] = 'Design';
 ?>
diff --git a/interface/web/tools/lib/lang/dk_usersettings.lng b/interface/web/tools/lib/lang/dk_usersettings.lng
index 9398f2626ade1697b6ce74f5c4db00421a8c1c1f..341d9db757b08e847b3d0aa5b7ece8781959764a 100644
--- a/interface/web/tools/lib/lang/dk_usersettings.lng
+++ b/interface/web/tools/lib/lang/dk_usersettings.lng
@@ -9,4 +9,7 @@ $wb['repeat_password_txt'] = 'Gentage Adgangskode';
 $wb['password_mismatch_txt'] = 'Adgangskoderne stemmer ikke overens.';
 $wb['password_match_txt'] = 'Adgangskoderne stemmer overens.';
 $wb['password_txt'] = 'Password';
+$wb['language_txt'] = 'Sprog';
+$wb['startmodule_txt'] = 'Startmodule';
+$wb['app_theme_txt'] = 'Design';
 ?>
diff --git a/interface/web/tools/lib/lang/el_usersettings.lng b/interface/web/tools/lib/lang/el_usersettings.lng
index 57e8bcb17a2b7dfc6677e58efbda065b480fd12a..68ddcd657c44dac297d32edcc570ceb6bd06b10c 100644
--- a/interface/web/tools/lib/lang/el_usersettings.lng
+++ b/interface/web/tools/lib/lang/el_usersettings.lng
@@ -9,4 +9,6 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
+$wb['startmodule_txt'] = 'Startmodule';
+$wb['app_theme_txt'] = 'Design';
 ?>
diff --git a/interface/web/tools/lib/lang/en_usersettings.lng b/interface/web/tools/lib/lang/en_usersettings.lng
index 79c7437cb1b8882a75b3b3fc8ade2aeebcf4043f..601ae420ffb4120572a670e778a1887328a43fa4 100644
--- a/interface/web/tools/lib/lang/en_usersettings.lng
+++ b/interface/web/tools/lib/lang/en_usersettings.lng
@@ -9,4 +9,11 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
+$wb["language_txt"] = 'Language';
+$wb["startmodule_txt"] = 'Startmodule';
+$wb["app_theme_txt"] = 'Design';
+$wb['startmodule_empty'] = 'Startmodule empty.';
+$wb['startmodule_regex'] = 'Invalid chars in Startmodule.';
+$wb['app_theme_empty'] = 'App theme empty.';
+$wb['app_theme_regex'] = 'Invalid chars in App theme.';
 ?>
diff --git a/interface/web/tools/lib/lang/es_usersettings.lng b/interface/web/tools/lib/lang/es_usersettings.lng
index 9b2de57bfbd3bcf118bddf3f7113d9f57a47812b..43a181a11c7337042c0faada5357b30b53aae228 100644
--- a/interface/web/tools/lib/lang/es_usersettings.lng
+++ b/interface/web/tools/lib/lang/es_usersettings.lng
@@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Generar contraseña';
 $wb['repeat_password_txt'] = 'Repetir contraseña';
 $wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.';
 $wb['password_match_txt'] = 'Las contraseñas coinciden.';
+$wb['language_txt'] = 'Idioma';
+$wb['startmodule_txt'] = 'Módulo de inicio';
+$wb['app_theme_txt'] = 'Diseño';
 ?>
diff --git a/interface/web/tools/lib/lang/fi_usersettings.lng b/interface/web/tools/lib/lang/fi_usersettings.lng
index 8267c8117a57f1969b107d87d015a5c53bd6773d..91d71739537e6d663f4a6e9fc043ab5f73af5fed 100644
--- a/interface/web/tools/lib/lang/fi_usersettings.lng
+++ b/interface/web/tools/lib/lang/fi_usersettings.lng
@@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
+$wb['language_txt'] = 'Language';
+$wb['startmodule_txt'] = 'Startmodule';
+$wb['app_theme_txt'] = 'Design';
 ?>
diff --git a/interface/web/tools/lib/lang/fr_usersettings.lng b/interface/web/tools/lib/lang/fr_usersettings.lng
index bafccd3b97ba4a51252e6ab9a8932d07ff1856f0..b398e76e352ccb6b168473b29f74bcbf6c5b932f 100644
--- a/interface/web/tools/lib/lang/fr_usersettings.lng
+++ b/interface/web/tools/lib/lang/fr_usersettings.lng
@@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Générer un mot de passe';
 $wb['repeat_password_txt'] = 'Répéter le mot de passe';
 $wb['password_mismatch_txt'] = 'Les mots de passe ne correspondent pas.';
 $wb['password_match_txt'] = 'Les mots de passe correspondent.';
+$wb['language_txt'] = 'Language';
+$wb['startmodule_txt'] = 'Startmodule';
+$wb['app_theme_txt'] = 'Design';
 ?>
diff --git a/interface/web/tools/lib/lang/hr_usersettings.lng b/interface/web/tools/lib/lang/hr_usersettings.lng
index 50759d4883abbc64344f6b8bc4afa9e73fff949a..b707cce4da55bf35f0c771408c92f95fd0464457 100644
--- a/interface/web/tools/lib/lang/hr_usersettings.lng
+++ b/interface/web/tools/lib/lang/hr_usersettings.lng
@@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Generiraj Å¡ifru';
 $wb['repeat_password_txt'] = 'Ponovi Å¡ifru';
 $wb['password_mismatch_txt'] = 'Šifre nisu identične.';
 $wb['password_match_txt'] = 'Šifre su identične.';
+$wb['language_txt'] = 'Jezik';
+$wb['startmodule_txt'] = 'Početna stranica';
+$wb['app_theme_txt'] = 'Tema';
 ?>
diff --git a/interface/web/tools/lib/lang/hu_usersettings.lng b/interface/web/tools/lib/lang/hu_usersettings.lng
index 49aa75537fc06fa9fd9aaef184b5e16aa5408efd..2a89acf5b5f926929859300cc3e573566b55fc1c 100644
--- a/interface/web/tools/lib/lang/hu_usersettings.lng
+++ b/interface/web/tools/lib/lang/hu_usersettings.lng
@@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
+$wb['language_txt'] = 'Language';
+$wb['startmodule_txt'] = 'Startmodule';
+$wb['app_theme_txt'] = 'Design';
 ?>
diff --git a/interface/web/tools/lib/lang/id_usersettings.lng b/interface/web/tools/lib/lang/id_usersettings.lng
index 7b1bc225cad5a6e8d3631332e983cd88e92f5179..760cfe75f244d893433fc863f683093816a11c00 100644
--- a/interface/web/tools/lib/lang/id_usersettings.lng
+++ b/interface/web/tools/lib/lang/id_usersettings.lng
@@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
+$wb['language_txt'] = 'Language';
+$wb['startmodule_txt'] = 'Startmodule';
+$wb['app_theme_txt'] = 'Design';
 ?>
diff --git a/interface/web/tools/lib/lang/it_usersettings.lng b/interface/web/tools/lib/lang/it_usersettings.lng
index e75e8d28d2cf550d1893d81053c910d87584e7a3..a1ad8eba871125a2cf17c29a4e70b39f2f2f995d 100644
--- a/interface/web/tools/lib/lang/it_usersettings.lng
+++ b/interface/web/tools/lib/lang/it_usersettings.lng
@@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
+$wb['language_txt'] = 'Language';
+$wb['startmodule_txt'] = 'Startmodule';
+$wb['app_theme_txt'] = 'Design';
 ?>
diff --git a/interface/web/tools/lib/lang/ja_usersettings.lng b/interface/web/tools/lib/lang/ja_usersettings.lng
index 443a4510543f83ab235d1e0dcf57a1f4770f5576..291aa94537208f694c4b6e49eabe059d7ac8f085 100644
--- a/interface/web/tools/lib/lang/ja_usersettings.lng
+++ b/interface/web/tools/lib/lang/ja_usersettings.lng
@@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
+$wb['language_txt'] = 'Language';
+$wb['startmodule_txt'] = 'Startmodule';
+$wb['app_theme_txt'] = 'Design';
 ?>
diff --git a/interface/web/tools/lib/lang/nl_usersettings.lng b/interface/web/tools/lib/lang/nl_usersettings.lng
index 0a95f7ffa9024dfff4d9db8168f76769a6df4792..909df9dbecf4bcadca6266477ec37b276581f1ee 100644
--- a/interface/web/tools/lib/lang/nl_usersettings.lng
+++ b/interface/web/tools/lib/lang/nl_usersettings.lng
@@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
+$wb['language_txt'] = 'Taal';
+$wb['startmodule_txt'] = 'Startmodule';
+$wb['app_theme_txt'] = 'Design';
 ?>
diff --git a/interface/web/tools/lib/lang/pl_usersettings.lng b/interface/web/tools/lib/lang/pl_usersettings.lng
index 45081f681b6fce1de43062dd7602f154a15a5821..64396df2409dbb08ea741cd5d7ea7551ce5769c1 100644
--- a/interface/web/tools/lib/lang/pl_usersettings.lng
+++ b/interface/web/tools/lib/lang/pl_usersettings.lng
@@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Wygeneruj hasło';
 $wb['repeat_password_txt'] = 'Powtórz hasło';
 $wb['password_mismatch_txt'] = 'Hasła się nie zgadzają';
 $wb['password_match_txt'] = 'Hasła się zgadzają';
+$wb['language_txt'] = 'Język';
+$wb['startmodule_txt'] = 'Moduł startowy';
+$wb['app_theme_txt'] = 'Temat';
 ?>
diff --git a/interface/web/tools/lib/lang/pt_usersettings.lng b/interface/web/tools/lib/lang/pt_usersettings.lng
index 81fd824d303c8845fbe31e5110d226738fbcaad8..4925a3f7286da3e7a1fc9c74205d7dcd4217ccfe 100644
--- a/interface/web/tools/lib/lang/pt_usersettings.lng
+++ b/interface/web/tools/lib/lang/pt_usersettings.lng
@@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
+$wb['language_txt'] = 'Language';
+$wb['startmodule_txt'] = 'Startmodule';
+$wb['app_theme_txt'] = 'Design';
 ?>
diff --git a/interface/web/tools/lib/lang/ro_usersettings.lng b/interface/web/tools/lib/lang/ro_usersettings.lng
index fae890fab609e6801b5e57f2de2e5059b37b1f50..8c43550f33cc56729cd5902089e60d21b5732e25 100644
--- a/interface/web/tools/lib/lang/ro_usersettings.lng
+++ b/interface/web/tools/lib/lang/ro_usersettings.lng
@@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
+$wb['language_txt'] = 'Language';
+$wb['startmodule_txt'] = 'Startmodule';
+$wb['app_theme_txt'] = 'Design';
 ?>
diff --git a/interface/web/tools/lib/lang/ru_usersettings.lng b/interface/web/tools/lib/lang/ru_usersettings.lng
index 609b69fdb0ae28b498da62f2050c15caed902e4d..ffa3f3bf03116cf1d8b3cd4b97c38114e4762b28 100644
--- a/interface/web/tools/lib/lang/ru_usersettings.lng
+++ b/interface/web/tools/lib/lang/ru_usersettings.lng
@@ -9,4 +9,9 @@ $wb['generate_password_txt'] = 'Создать пароль';
 $wb['repeat_password_txt'] = 'Повторить пароль';
 $wb['password_mismatch_txt'] = 'Пароли не совпадают.';
 $wb['password_match_txt'] = 'Эти пароли совпадают.';
+$wb['interface_head_txt'] = 'Настройки интерфейса';
+$wb['interface_desc_txt'] = 'Измените свой интерфейс';
+$wb['language_txt'] = 'Язык';
+$wb['startmodule_txt'] = 'Стартовый модуль';
+$wb['app_theme_txt'] = 'Тема';
 ?>
diff --git a/interface/web/tools/lib/lang/se_usersettings.lng b/interface/web/tools/lib/lang/se_usersettings.lng
index 4461fff4968b7df639c080a81b5e9ddf6cb4113d..f6de2dc4eebe227af1be4cfe0e5de3bd5ee7eff1 100644
--- a/interface/web/tools/lib/lang/se_usersettings.lng
+++ b/interface/web/tools/lib/lang/se_usersettings.lng
@@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Generera lösenord';
 $wb['repeat_password_txt'] = 'Upprepa lösenord';
 $wb['password_mismatch_txt'] = 'Lösenorden matchar inte';
 $wb['password_match_txt'] = 'Lösenorden matchar';
+$wb['language_txt'] = 'Språk';
+$wb['startmodule_txt'] = 'Startmodul';
+$wb['app_theme_txt'] = 'Design';
 ?>
diff --git a/interface/web/tools/lib/lang/sk_usersettings.lng b/interface/web/tools/lib/lang/sk_usersettings.lng
index 4c8bcb900e742c83a7b65aa4c29293be8f866f1a..e00f5e664b1bb4bcb71a6614446dec2530c1aa21 100644
--- a/interface/web/tools/lib/lang/sk_usersettings.lng
+++ b/interface/web/tools/lib/lang/sk_usersettings.lng
@@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Generate Password';
 $wb['repeat_password_txt'] = 'Repeat Password';
 $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
+$wb['language_txt'] = 'Language';
+$wb['startmodule_txt'] = 'Startmodule';
+$wb['app_theme_txt'] = 'Design';
 ?>
diff --git a/interface/web/tools/lib/lang/tr_usersettings.lng b/interface/web/tools/lib/lang/tr_usersettings.lng
index fa2eff63d7419c17c4272505934e530214eae709..a1fd7c56d4cddc2fd47065819f46c37917369bfb 100644
--- a/interface/web/tools/lib/lang/tr_usersettings.lng
+++ b/interface/web/tools/lib/lang/tr_usersettings.lng
@@ -9,4 +9,7 @@ $wb['generate_password_txt'] = 'Parola Ãœret';
 $wb['repeat_password_txt'] = 'Parola Onayı';
 $wb['password_mismatch_txt'] = 'Parola ile onayı aynı değil.';
 $wb['password_match_txt'] = 'Parola ile onayı aynı.';
+$wb['language_txt'] = 'Dil';
+$wb['startmodule_txt'] = 'Başlangıç modülü';
+$wb['app_theme_txt'] = 'Tasarım';
 ?>
diff --git a/interface/web/tools/lib/module.conf.php b/interface/web/tools/lib/module.conf.php
index 617ab0b6cd6d354e96499bfecbf90b8700b86d0c..5911cdbebfe822898c5968bfe663bdb2746886d8 100644
--- a/interface/web/tools/lib/module.conf.php
+++ b/interface/web/tools/lib/module.conf.php
@@ -5,7 +5,7 @@ global $conf;
 $module['name']  = 'tools';
 $module['title']  = 'top_menu_tools';
 $module['template']  = 'module.tpl.htm';
-$module['startpage']  = 'tools/index.php';
+$module['startpage']  = 'tools/user_settings.php';
 $module['tab_width']    = '60';
 $module['order']    = '80';
 
@@ -13,7 +13,7 @@ $module['order']    = '80';
 //**** Change User password
 $items = array();
 
-$items[] = array(   'title'  => 'Password and Language',
+$items[] = array(   'title'  => 'User Settings',
 	'target'  => 'content',
 	'link' => 'tools/user_settings.php',
 	'html_id'   => 'user_settings');
@@ -24,23 +24,4 @@ $module['nav'][] = array(   'title' => 'User Settings',
 	'items' => $items);
 
 unset($items);
-
-//**** Change interface settings + load settings page of the activated theme
-$items = array();
-
-$items[] = array(   'title'     => 'Interface',
-	'target'  => 'content',
-	'link' => 'tools/interface_settings.php',
-	'html_id'   => 'interface_settings');
-
-if(file_exists(ISPC_WEB_PATH.'/tools/lib/interface.d/tpl_' . $_SESSION['s']['user']['app_theme'] . '.menu.php')) include_once ISPC_WEB_PATH.'/tools/lib/interface.d/tpl_' . $_SESSION['s']['user']['app_theme'] . '.menu.php';
-
-$module['nav'][] = array( 'title' => 'Interface',
-	'open'  => 1,
-	'items' => $items);
-
-unset($items);
-
-
-
 ?>
diff --git a/interface/web/tools/templates/user_settings.htm b/interface/web/tools/templates/user_settings.htm
index 4fa1c9de34d0b2007d6923f32f4f147f2957e8ad..a620f419c54d58ed5ad4e3b044c8410b10d46160 100644
--- a/interface/web/tools/templates/user_settings.htm
+++ b/interface/web/tools/templates/user_settings.htm
@@ -1,41 +1,58 @@
-			<div class="form-group">
-                <label for="passwort" class="col-sm-3 control-label">{tmpl_var name='password_txt'}</label>
-                <div class="col-sm-9">
-				<div class="input-group">
-					<input type="password" name="passwort" id="passwort" value="{tmpl_var name='passwort'}" class="form-control" autocomplete="off" onkeyup="pass_check(this.value);checkPassMatch('passwort','repeat_password');" />
-					<span class="input-group-btn">
-						<button class="btn btn-default" type="button" onclick="generatePassword('passwort','repeat_password');">{tmpl_var name='generate_password_txt'}</button>
-					</span>
-				</div>
-				</div>
-            </div>
-            <div class="form-group">
-                <label class="col-sm-3 control-label">{tmpl_var name='password_strength_txt'}</label>
-                <div class="col-sm-9 checkbox">
-                <div id="passBar"></div>
-                <span id="passText">&nbsp;</span>
-                </div>
-            </div>
-            <div class="form-group">
-                <label for="repeat_password" class="col-sm-3 control-label">{tmpl_var name='repeat_password_txt'}</label>
-                <div class="col-sm-9"><input type="password" name="repeat_password" id="repeat_password" value="" class="form-control" autocomplete="off"  onkeyup="checkPassMatch('passwort','repeat_password');" /></div></div>
-            <div class="form-group">
-				<div class="col-sm-offset-3 col-sm-9">
-					<div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div>
-					<div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div>
-				</div>
-			</div>
-            <div class="form-group">
-                <label for="language" class="col-sm-3 control-label">{tmpl_var name='language_txt'}</label>
-                <div class="col-sm-9"><select name="language" id="language" class="form-control flags">
-                    {tmpl_var name='language'}
-                </select></div>
-            </div>
-        
-        
-        <input type="hidden" name="id" value="{tmpl_var name='id'}">
-            
-        <div class="clear"><div class="right">
-            <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="tools/user_settings.php">{tmpl_var name='btn_save_txt'}</button>
-            <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="tools/index.php">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
+<div class="form-group">
+  <label for="passwort" class="col-sm-3 control-label">{tmpl_var name='password_txt'}</label>
+  <div class="col-sm-9">
+    <div class="input-group">
+      <input type="password" name="passwort" id="passwort" value="{tmpl_var name='passwort'}" class="form-control" autocomplete="off" onkeyup="pass_check(this.value);checkPassMatch('passwort','repeat_password');" />
+      <span class="input-group-btn">
+      <button class="btn btn-default" type="button" onclick="generatePassword('passwort','repeat_password');">{tmpl_var name='generate_password_txt'}</button>
+      </span>
+    </div>
+  </div>
+</div>
+<div class="form-group">
+  <label class="col-sm-3 control-label">{tmpl_var name='password_strength_txt'}</label>
+  <div class="col-sm-9 checkbox">
+    <div id="passBar"></div>
+    <span id="passText">&nbsp;</span>
+  </div>
+</div>
+<div class="form-group">
+  <label for="repeat_password" class="col-sm-3 control-label">{tmpl_var name='repeat_password_txt'}</label>
+  <div class="col-sm-9"><input type="password" name="repeat_password" id="repeat_password" value="" class="form-control" autocomplete="off"  onkeyup="checkPassMatch('passwort','repeat_password');" /></div>
+</div>
+<div class="form-group">
+  <div class="col-sm-offset-3 col-sm-9">
+    <div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div>
+    <div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div>
+  </div>
+</div>
+<div class="form-group">
+  <label for="language" class="col-sm-3 control-label">{tmpl_var name='language_txt'}</label>
+  <div class="col-sm-9"><select name="language" id="language" class="form-control flags">
+    {tmpl_var name='language'}
+    </select>
+  </div>
+</div>
+<!-- TODO: If user theme change is activated -->
+<div class="form-group">
+  <label for="app_theme" class="col-sm-3 control-label">{tmpl_var name='app_theme_txt'}</label>
+  <div class="col-sm-9"><select name="app_theme" id="app_theme" class="form-control">
+    {tmpl_var name='app_theme'}
+    </select>
+  </div>
+</div>
+<!-- TODO: Limit to activated modules -->
+<div class="form-group">
+  <label for="startmodule" class="col-sm-3 control-label">{tmpl_var name='startmodule_txt'}</label>
+  <div class="col-sm-9"><select name="startmodule" id="startmodule" class="form-control">
+    {tmpl_var name='startmodule'}
+    </select>
+  </div>
+</div>
+<input type="hidden" name="id" value="{tmpl_var name='id'}">
+<div class="clear">
+  <div class="right">
+    <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="tools/user_settings.php">{tmpl_var name='btn_save_txt'}</button>
+    <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="tools/index.php">{tmpl_var name='btn_cancel_txt'}</button>
+  </div>
+</div>
diff --git a/interface/web/tools/user_settings.php b/interface/web/tools/user_settings.php
index 5c3876fb864d8036338dda594437adcf0208d765..03c0b6a7e2ce23cd7ea9a24d7d8396d2f6aa4d5d 100644
--- a/interface/web/tools/user_settings.php
+++ b/interface/web/tools/user_settings.php
@@ -86,22 +86,50 @@ class page_action extends tform_actions {
 		if($_POST['passwort'] != $_POST['repeat_password']) {
 			$app->tform->errorMessage = $app->tform->lng('password_mismatch');
 		}
-		
+
 		$language = $app->functions->check_language($_POST['language']);
 		$_SESSION['s']['user']['language'] = $language;
 		$_SESSION['s']['language'] = $language;
 	}
-	
+
 	function onAfterUpdate() {
 		global $app;
-		
+
 		if($_POST['passwort'] != '') {
 			$tmp_user = $app->db->queryOneRecord("SELECT passwort FROM sys_user WHERE userid = ?", $_SESSION['s']['user']['userid']);
 			$_SESSION['s']['user']['passwort'] = $tmp_user['passwort'];
 			unset($tmp_user);
 		}
+		$this->updateSessionTheme();
+
+		if($this->_theme_changed == true) {
+			// not the best way, but it works
+			header('Content-Type: text/html');
+			print '<script type="text/javascript">document.location.reload();</script>';
+			exit;
+		}
 	}
+	var $_theme_changed = false;
 
+	function updateSessionTheme() {
+		global $app, $conf;
+
+		if($this->dataRecord['app_theme'] != 'default') {
+			$tmp_path = ISPC_THEMES_PATH."/".$this->dataRecord['app_theme'];
+			if(!@is_dir($tmp_path) || (@file_exists($tmp_path."/ispconfig_version") && trim(file_get_contents($tmp_path."/ispconfig_version")) != ISPC_APP_VERSION)) {
+				// fall back to default theme if this one is not compatible with current ispc version
+				$this->dataRecord['app_theme'] = 'default';
+			}
+		}
+		if($this->dataRecord['app_theme'] != $_SESSION['s']['user']['theme']) $this->_theme_changed = true;
+		$_SESSION['s']['theme'] = $this->dataRecord['app_theme'];
+		$_SESSION['s']['user']['theme'] = $_SESSION['s']['theme'];
+		$_SESSION['s']['user']['app_theme'] = $_SESSION['s']['theme'];
+	}
+
+	function onAfterInsert() {
+		$this->onAfterUpdate();
+	}
 
 }