diff --git a/html/setup.php b/html/setup.php
index b3765be913ac48857e0635833313520d92463f88..568c76a0d3ff119d5719f5a4d56a3f98dc9dc606 100644
--- a/html/setup.php
+++ b/html/setup.php
@@ -87,8 +87,9 @@ if (isset($_POST['lang_selected']) && $_POST['lang_selected'] != '') {
 
 Language::init($lang);
 
-$smarty->assign("rtl",  Language::isRTL($lang));
-$smarty->assign("must", '<span class="must">*</span>');
+$smarty->assign('lang', preg_replace('/_.*$/', '', $lang));
+$smarty->assign('rtl',  Language::isRTL($lang));
+$smarty->assign('must', '<span class="must">*</span>');
 
 /* Minimal config */
 if (!session::global_is_set('config')) {
diff --git a/include/class_exceptions.inc b/include/class_exceptions.inc
index 16eeea5ada2acca4fcd606073314b4123478176b..1dc822e6c69d34e4cdf4436af8f0671e919aa0cc 100644
--- a/include/class_exceptions.inc
+++ b/include/class_exceptions.inc
@@ -71,6 +71,10 @@ class NoManagementClassException extends FusionDirectoryException
 {
 }
 
+class UnknownClassException extends FusionDirectoryException
+{
+}
+
 class LDAPFailureException extends FusionDirectoryException
 {
 }
diff --git a/include/class_pluglist.inc b/include/class_pluglist.inc
index 7e7d79dde20a836487500def31bbcc7f9a8369db..3218dcbfb096b28d24caa060a9469298a7debae1 100644
--- a/include/class_pluglist.inc
+++ b/include/class_pluglist.inc
@@ -505,6 +505,9 @@ class pluglist {
   {
     $plist = session::global_get('plist');
     if ($plist) {
+      if (!isset($plist->info[$cname])) {
+        throw new UnknownClassException($cname);
+      }
       return $plist->info[$cname];
     } else {
       trigger_error('plist not loaded yet');
diff --git a/include/simpleplugin/class_simplePlugin.inc b/include/simpleplugin/class_simplePlugin.inc
index c7963b7b85c32693a49bbd7563d7237f10d5f2c4..dc1c295db6f04da1e2eef35b40eab8f8061288e9 100644
--- a/include/simpleplugin/class_simplePlugin.inc
+++ b/include/simpleplugin/class_simplePlugin.inc
@@ -155,7 +155,12 @@ class simplePlugin
     $this->parent   = $parent;
     $this->mainTab  = $mainTab;
 
-    $plInfo = pluglist::pluginInfos(get_class($this));
+    try {
+      $plInfo = pluglist::pluginInfos(get_class($this));
+    } catch (UnknownClassException $e) {
+      /* May happen in special cases like setup */
+      $plInfo = array();
+    }
 
     if (empty($this->objectclasses) && isset($plInfo['plObjectClass'])) {
       $this->objectclasses = $plInfo['plObjectClass'];
diff --git a/setup/class_setup.inc b/setup/class_setup.inc
index 9d50e549d24708d39939b3320c57d83a1c110584..d316c02b718621f4a560fd55af822a7e315adfc1 100644
--- a/setup/class_setup.inc
+++ b/setup/class_setup.inc
@@ -64,7 +64,7 @@ class setup
      *  but only do this, if user is allowed to use the setup.
      * If setupsetupStepWelcome is_completed, we are allowed to view those infos-
      */
-    if (isset($_GET['info']) && preg_match("/setupStepWelcome/i", get_class($this->o_steps[1])) && $this->o_steps[1]->is_completed()) {
+    if (isset($_GET['info']) && preg_match('/setupStepWelcome/i', get_class($this->o_steps[0])) && $this->o_steps[0]->is_completed()) {
       phpinfo();
       exit();
     }