diff --git a/test/test_sams_hub.py b/test/test_sams_hub.py
index 3db8638ba50db4cd704febefb6fce74759a55c3b..ccecc9954f4e5c1e8f97b7c962f1327c334568ae 100644
--- a/test/test_sams_hub.py
+++ b/test/test_sams_hub.py
@@ -3,130 +3,213 @@ from sams_classes import SAMSHub, SAMSApp
 from sams_classes.exceptions import AppNotExist
 from flask import Flask, Blueprint
 import sys
-from pexpect.async import expect_async
 
 def eprint(*args, **kwargs):
   print(*args, file=sys.stderr, **kwargs)
 
-class TestSAMSHub(unittest.TestCase):
+class CaseSAMSHubWithMainApp(unittest.TestCase):
   
+  def setUp(self):
+    self.hub = SAMSHub(
+      name = 'test', config = {'default_language': 'de', 'main_app' : 'test'})
+  
+  def test_main_app(self):
+    """It is possible to declare a main app where the urls have no prefix"""
+    appname = 'test.app'
+    expected_names = [
+      'Hauptanwendung Punkt 1', 'Hauptanwendung Punkt 2', 'Zusatzanwendung 1'
+    ]
+    urls = ['', '2', 'app/1']
+    name_vars = ['main_1', 'main_2', 'app_1']
+    expected = ''.join((
+      "<ul>\n\n<li><a href='/", urls[0], "'>", expected_names[0],
+      "</a>\n\n<ul>\n\n<li><a href='/", urls[1], "'>", expected_names[1],
+      "</a>\n\n</li>\n\n</ul>\n\n</li>\n\n<li><a href='/", appname, '/', urls[2], "'>",
+      expected_names[2], '</a>\n\n</li>\n\n</ul>'
+    ))
+    self.hub.addApp(
+      SAMSApp(
+        name = 'test',
+        manifest = {
+          'default_language': 'de',
+          'views':[
+            {'url': urls[0], 'function': 'views.menu_test'},
+            {'url': urls[1], 'function': 'views.do_nothing'}
+          ],
+          'menu':[
+            {
+              'url': urls[0], 'name_string': name_vars[0],
+              'menu': [{'url': urls[1], 'name_string': name_vars[1]}]
+            }
+          ]
+        }
+        , langDict = {'de': dict(zip(name_vars, expected_names))}
+      )
+    )
+    self.hub.addApp(
+      SAMSApp(
+        name = appname,
+        manifest = {
+          'default_language': 'de',
+          'views': [{'url': urls[2], 'function': 'views.do_nothing'}],
+          'menu': [{'url': urls[2], 'name_string': name_vars[2]}]
+        }, langDict = {'de': dict(zip(name_vars, expected_names))}
+      )
+    )
+    self.hub.flaskApp.config['DEBUG'] = True
+    with self.hub.flaskApp.test_client(self) as client:
+      response = client.get('/')
+      self.assertIs(response.status_code, 200)
+      self.assertEquals(response.data.decode('utf-8'), expected)
+      response = client.get('/' + urls[1])
+      self.assertIs(response.status_code, 200)
+      response = client.get('/' + appname + '/' + urls[2])
+      self.assertIs(response.status_code, 200)
+
+class CaseSAMSHubInitExceptions(unittest.TestCase):
+
   def test_missing_init_name(self):
     with self.assertRaises(TypeError):
-      hub = SAMSHub(config= {'default_language': 'de'})
+      SAMSHub(config= {'default_language': 'de'})
   
   def test_missing_init_config(self):
     with self.assertRaises(TypeError):
-      hub = SAMSHub(name = 'test')
+      SAMSHub(name = 'test')
   
   def test_missing_init_default_language(self):
     with self.assertRaises(TypeError):
-      hub = SAMSHub(name ='test', config = {}) 
+      SAMSHub(name ='test', config = {}) 
+
+class CaseMinimalSAMSHub(unittest.TestCase):
   
+  def setUp(self):
+    self.hub = SAMSHub(name = 'test', config = {'default_language': 'de'})
+
   def test_apps_addable(self):
-    hub = SAMSHub(name = 'test', config = {'default_language': 'de'})
-    self.assertIs(len(hub.appKeys), 0, 'Precondition, hub has 0 appKeys')
+    self.assertIs(len(self.hub.appKeys), 0, 'Precondition, hub has 0 appKeys')
     with self.assertRaises(AppNotExist):
-      hub.app('test_app')
-    hub.addApp(
+      self.hub.app('test_app')
+    self.hub.addApp(
       SAMSApp(
         name = 'test', manifest = {'default_language': 'en'}
         , langDict = {'en':{}}
       )
     )
-    self.assertIs(len(hub.appKeys), 1, 'Postcondition, hub has 1 appKey')
+    self.assertIs(len(self.hub.appKeys), 1, 'Postcondition, hub has 1 appKey')
     self.assertIsInstance(
-      hub.app('test')
+      self.hub.app('test')
       , SAMSApp, 'Postcondition, "test_app" in hub is a SAMSApp'
     )
 
   def test_error_apps_add_wrong_type(self):
-    hub = SAMSHub(name = 'test', config = {'default_language': 'de'})
     with self.assertRaises(TypeError):
-      hub.addApp('wrong')
+      self.hub.addApp('wrong')
   
   def test_has_flask_app(self):
-    hub = SAMSHub(name = 'test', config = {'default_language': 'de'})
-    self.assertIsInstance(hub.flaskApp, Flask)
+    self.assertIsInstance(self.hub.flaskApp, Flask)
   
   def test_flask_app_readonly(self):
-    hub = SAMSHub(name = 'test', config = {'default_language': 'de'})
     with self.assertRaises(AttributeError):
-      hub.flaskApp = Flask('test')
+      self.hub.flaskApp = Flask('test')
   
   def test_add_app_registers_blueprint(self):
     """The blueprint of the addedApp is registered in flaskApp"""
-    hub = SAMSHub(name = 'test', config = {'default_language': 'de'})
     self.assertEqual(
-      hub.flaskApp.blueprints.get('test') 
+      self.hub.flaskApp.blueprints.get('test') 
       , None, 'Precondition, hub.flaskApp has not Blueprint "test"'
     )
-    hub.addApp(
+    self.hub.addApp(
       SAMSApp(
         name = 'test', manifest = {'default_language': 'en'}
         , langDict = {'en':{}}
       )
     )
     self.assertIsInstance(
-      hub.flaskApp.blueprints.get('test')
+      self.hub.flaskApp.blueprints.get('test')
       , Blueprint, 'Postcondition, hub.flaskApp has a Blueprint "test"')
   
   def test_context_processor_app_lang(self):
     """The hub sets an app context processor that provides a app_lang dict """
-    hub = SAMSHub(name = 'test', config = {'default_language': 'de'})
     expected = 'Hallo Welt!'
-    hub.addApp(
+    self.hub.addApp(
       SAMSApp(
-        name = 'test'
-        , manifest = {
-          'default_language': 'de'
-          , 'views':[
-            {'url': 'hello'
-             , 'function': 'views.hello'}
-          ]
-        }
-        , langDict = {
-          'de': {'hello': expected}
-        }
+        name = 'test', manifest = {
+          'default_language': 'de', 'views':[{
+            'url': 'hello', 'function': 'views.hello'}]
+        }, langDict = {'de': {'hello': expected}}
       )
     )
-    hub.flaskApp.config['DEBUG'] = True
-    client = hub.flaskApp.test_client(self)
+    self.hub.flaskApp.config['DEBUG'] = True
+    client = self.hub.flaskApp.test_client(self)
     response = client.get('/test/hello')
     self.assertIs(response.status_code, 200)
     self.assertEquals(response.data.decode('utf-8'), expected)
+
+  def test_menu_list_provided(self):
+    """The Hub provides a menu list via context_processor"""
+    name = 'test'
+    expected_names = [
+      'Ebene 1: Eintrag 1', 'Eintrag 1 Ebene 2: Eintrag 1', 'Ebene 1: Eintrag 2'
+    ]
+    urls = ['1/1', '2/1', '1/2']
+    name_vars = ['1_1', '2_1', '1_2']
+    expected = ''.join((
+      "<ul>\n\n<li><a href='/", name, '/', urls[0], "'>", expected_names[0],
+      "</a>\n\n<ul>\n\n<li><a href='/", name, '/', urls[1], "'>", expected_names[1],
+      "</a>\n\n</li>\n\n</ul>\n\n</li>\n\n<li><a href='/", name, '/', urls[2], "'>",
+      expected_names[2], '</a>\n\n</li>\n\n</ul>'
+    ))
+    self.hub.addApp(
+      SAMSApp(
+        name = name, manifest = {
+          'default_language': 'de',
+          'views': [{'url': 'test-menu','function': 'views.menu_test'}],
+          'menu':[
+            {'url': urls[0],'name_string': name_vars[0], 'menu':[
+              {'url': urls[1],'name_string': name_vars[1]}
+            ]},
+            { 'url': urls[2], 'name_string': name_vars[2] }
+          ]
+        }
+        , langDict = {'de': dict(zip(name_vars, expected_names))}
+      )
+    )
+    self.hub.flaskApp.config['DEBUG'] = True
+    with self.hub.flaskApp.test_client(self) as client:
+      response = client.get('/test/test-menu')
+      self.assertIs(response.status_code, 200)
+      self.assertEquals(response.data.decode('utf-8'), expected)
   
   def test_hub_default_language_used(self):
     """The hub default_language is prefered instead of app default_language"""
-    wrong = 'Hallo Welt!'
-    expected = 'Hello world!' 
-    hub = SAMSHub(name = 'test', config = {'default_language': 'en'})
-    hub.addApp(
+    wrong = 'Hello world!'
+    expected = 'Hallo Welt!'
+    self.hub.addApp(
       SAMSApp(
         name = 'test'
         , manifest = {
-          'default_language': 'de'
+          'default_language': 'en'
           , 'views':[
             {'url': 'hello'
              , 'function': 'views.hello'}
           ]
         }
         , langDict = {
-          'de': {'hello': wrong}
-          , 'en': {'hello': expected}
+          'de': {'hello': expected}
+          , 'en': {'hello': wrong}
         }
       )
     )
-    hub.flaskApp.config['DEBUG'] = True
-    client = hub.flaskApp.test_client(self)
+    self.hub.flaskApp.config['DEBUG'] = True
+    client = self.hub.flaskApp.test_client(self)
     response = client.get('/test/hello')
     self.assertIs(response.status_code, 200)
     self.assertEquals(response.data.decode('utf-8'), expected)
-  
+
   def test_session_language_used(self):
     """use Session['language'] if possible"""
-    expected = 'Hallo Welt!'
-    hub = SAMSHub(name = 'test', config = {'default_language': 'fr'})
-    hub.addApp(
+    expected = 'Bonjour!'
+    self.hub.addApp(
       SAMSApp(
         name = 'test'
         , manifest = {
@@ -137,126 +220,16 @@ class TestSAMSHub(unittest.TestCase):
           ]
         }
         , langDict = {
-          'de': {'hello': expected}
+          'de': {'hello': 'falsch'}
           , 'en': {'hello': 'wrong'}
-          , 'fr': {'hello': 'mal'}
+          , 'fr': {'hello': expected}
         }
       )
     )
-    hub.flaskApp.config['DEBUG'] = True
-    with hub.flaskApp.test_client(self) as client:
+    self.hub.flaskApp.config['DEBUG'] = True
+    with self.hub.flaskApp.test_client(self) as client:
       with client.session_transaction() as session_simulation:
-        session_simulation['language'] = 'de'
+        session_simulation['language'] = 'fr'
       response = client.get('/test/hello')
       self.assertIs(response.status_code, 200)
-      self.assertEquals(response.data.decode('utf-8'), expected)
-  
-  def test_menu_list_provided(self):
-    """The Hub provides a menu list via context_processor"""
-    name = 'test'
-    hub = SAMSHub(name = name, config = {'default_language': 'de'})
-    expected_names = [
-      'Ebene 1: Eintrag 1', 'Eintrag 1 Ebene 2: Eintrag 1', 'Ebene 1: Eintrag 2'
-    ]
-    urls = ['1/1', '2/1', '1/2']
-    name_vars = ['1_1', '2_1', '1_2']
-    expected = ''.join((
-      "<ul>\n\n<li><a href='/", name, '/', urls[0], "'>", expected_names[0],
-      "</a>\n\n<ul>\n\n<li><a href='/", name, '/', urls[1], "'>", expected_names[1],
-      "</a>\n\n</li>\n\n</ul>\n\n</li>\n\n<li><a href='/", name, '/', urls[2], "'>",
-      expected_names[2], '</a>\n\n</li>\n\n</ul>'
-    ))
-    hub.addApp(
-      SAMSApp(
-        name = name,
-        manifest = {
-          'default_language': 'de',
-          'views':[
-            {
-              'url': 'test-menu',
-              'function': 'views.menu_test'
-            }
-          ],
-          'menu':[
-            {
-              'url': urls[0], 
-              'name_string': name_vars[0],
-              'menu':[
-                {
-                  'url': urls[1],
-                  'name_string': name_vars[1]
-                }
-              ]
-            },
-            {
-              'url': urls[2],
-              'name_string': name_vars[2]
-            }
-          ]
-        }
-        , langDict = {
-          'de': dict(zip(name_vars, expected_names))
-        }
-      )
-    )
-    hub.flaskApp.config['DEBUG'] = True
-    with hub.flaskApp.test_client(self) as client:
-      response = client.get('/test/test-menu')
-      self.assertIs(response.status_code, 200)
-      self.assertEquals(response.data.decode('utf-8'), expected)
-  
-  def test_main_app(self):
-    """It is possible to declare a main app where the urls have no prefix"""
-    name = 'test'
-    appname = 'test.app'
-    hub = SAMSHub(
-      name = name, config = {'default_language': 'de', 'main_app' : 'test'})
-    expected_names = [
-      'Hauptanwendung Punkt 1', 'Hauptanwendung Punkt 2', 'Zusatzanwendung 1'
-    ]
-    urls = ['', '2', 'app/1']
-    name_vars = ['main_1', 'main_2', 'app_1']
-    expected = ''.join((
-      "<ul>\n\n<li><a href='/", urls[0], "'>", expected_names[0],
-      "</a>\n\n<ul>\n\n<li><a href='/", urls[1], "'>", expected_names[1],
-      "</a>\n\n</li>\n\n</ul>\n\n</li>\n\n<li><a href='/", appname, '/', urls[2], "'>",
-      expected_names[2], '</a>\n\n</li>\n\n</ul>'
-    ))
-    hub.addApp(
-      SAMSApp(
-        name = name,
-        manifest = {
-          'default_language': 'de',
-          'views':[
-            {'url': urls[0], 'function': 'views.menu_test'},
-            {'url': urls[1], 'function': 'views.do_nothing'}
-          ],
-          'menu':[
-            {
-              'url': urls[0], 'name_string': name_vars[0],
-              'menu': [{'url': urls[1], 'name_string': name_vars[1]}]
-            }
-          ]
-        }
-        , langDict = {'de': dict(zip(name_vars, expected_names))}
-      )
-    )
-    hub.addApp(
-      SAMSApp(
-        name = appname,
-        manifest = {
-          'default_language': 'de',
-          'views': [{'url': urls[2], 'function': 'views.do_nothing'}],
-          'menu': [{'url': urls[2], 'name_string': name_vars[2]}]
-        }, langDict = {'de': dict(zip(name_vars, expected_names))}
-      )
-    )
-    hub.flaskApp.config['DEBUG'] = True
-    with hub.flaskApp.test_client(self) as client:
-      response = client.get('/')
-      self.assertIs(response.status_code, 200)
-      self.assertEquals(response.data.decode('utf-8'), expected)
-      response = client.get('/' + urls[1])
-      self.assertIs(response.status_code, 200)
-      response = client.get('/' + appname + '/' + urls[2])
-      self.assertIs(response.status_code, 200)
\ No newline at end of file
+      self.assertEquals(response.data.decode('utf-8'), expected)
\ No newline at end of file