diff --git a/cypress/test01-system-setup.spec.js b/cypress/test01-system-setup.spec.js
index 4d77026..a303185 100644
--- a/cypress/test01-system-setup.spec.js
+++ b/cypress/test01-system-setup.spec.js
@@ -4,6 +4,7 @@ describe('Typemill Setup', function()
     {
       // visit setup form
       cy.visit('/setup')
+//      cy.visit('/setup',{ onBeforeLoad: (_contentWindow) => { Object.defineProperty(navigator, 'language', { value: 'fr-FR' }) } })
       cy.url().should('include','/setup')
 
       // add data and check attributes
@@ -63,7 +64,7 @@ describe('Typemill Setup', function()
       Cypress.Cookies.preserveOnce('typemill-session')
       
       // clicks link on welcome page to settings page
-      cy.get('.button').should('contain', 'Configure your website')
+//      cy.get('.button').should('contain', 'Configure your website')
       cy.get('.button').click()
       cy.url().should('include', '/tm/settings')        
     })
@@ -74,16 +75,30 @@ describe('Typemill Setup', function()
         .should('have.value', 'TYPEMILL')
         .and('have.attr','required')
       cy.get('input[name="settings[author]"]')
-        .should('have.value', 'Unknown')
       cy.get('select[name="settings[copyright]"]')
       cy.get('input[name="settings[year]"]')
         .should('have.attr', 'required')
       cy.get('select[name="settings[language]"]')
+//      cy.get('select[name="settings[langattr]"]')
       cy.get('input[name="settings[sitemap]"]')
         .should('have.value', 'http://localhost/typemillTest/cache/sitemap.xml')
         .and('have.attr','readonly')
-        Cypress.Cookies.preserveOnce('typemill-session')
-      })
+      cy.get('input[name="settings[logo]"]')
+      cy.get('input[name="settings[deletelogo]"]')
+      cy.get('input[name="settings[favicon]"]')
+      cy.get('input[name="settings[deletefav]"]')
+      cy.get('input[name="settings[headlineanchors]"]')
+      cy.get('input[name="settings[editor]"]')
+
+      cy.get('select[name="settings[language]"]')
+        .select('en')
+        .should('have.value', 'en')
+
+      cy.get('form').submit()
+      cy.get('#flash-message').should('contain', 'Settings are stored')
+
+      Cypress.Cookies.preserveOnce('typemill-session')
+    })
 
     it('creates default user data', function()
     {
@@ -95,6 +110,14 @@ describe('Typemill Setup', function()
         .and('have.attr','disabled')
       cy.get('input[name="username"]')
         .should('have.value', 'trendschau')
+      cy.get('input[name="firstname"]')
+        .clear()
+        .type('Sebastian')
+        .should('have.value', 'Sebastian')
+      cy.get('input[name="lastname"]')
+        .clear()
+        .type('Schürmanns')
+        .should('have.value', 'Schürmanns')
       cy.get('input[name="email"]')
         .should('have.value', 'trendschau@gmail.com')
         .and('have.attr','required')
@@ -104,6 +127,10 @@ describe('Typemill Setup', function()
         .should('have.value', '')
       cy.get('input[name="newpassword"]')
         .should('have.value', '')
+
+      cy.get('#userform').submit()
+      cy.get('#flash-message').should('contain', 'Saved all changes')
+
     })
 
     it('logouts out', function()
diff --git a/cypress/test02-initial-frontend.spec.js b/cypress/test02-initial-frontend.spec.js
index ed35f85..a10e319 100644
--- a/cypress/test02-initial-frontend.spec.js
+++ b/cypress/test02-initial-frontend.spec.js
@@ -105,14 +105,19 @@ describe('Typemill Initial Frontend', function()
       /* images */
       cy.get('img').eq(0).should('have.attr', 'alt', 'alt-text')
       cy.get('img').eq(0).should('have.attr', 'src', 'media/markdown.png')
-      cy.get('img').eq(2).should('have.id', 'myid')
+      cy.get('figure').eq(2).should('have.id', 'myid')
         .and('have.class', 'otherclass')
-        .and('have.attr', 'alt', 'alt-text')
+      cy.get('img').eq(2).should('have.attr', 'alt', 'alt-text')
         .and('have.attr', 'title', 'my title')
         .and('have.attr', 'width', '150px')
 
       /* blockquote */
       cy.get('blockquote').should('exist') 
+      
+      /* has navigation element */
+      cy.get('.notice1').should('exist')
+      cy.get('.notice2').should('exist')
+      cy.get('.notice3').should('exist')
 
       /* footnote */
       cy.get('sup').eq(0).should('have.id', 'fnref1:1')
diff --git a/cypress/test05-blox-editor.spec.js b/cypress/test05-blox-editor.spec.js
new file mode 100644
index 0000000..6c41a69
--- /dev/null
+++ b/cypress/test05-blox-editor.spec.js
@@ -0,0 +1,183 @@
+describe('Blox Editor', function() 
+{
+  before(function () 
+  {
+    cy.visit('/tm/login')
+    cy.url().should('include','/tm/login')
+
+    cy.get('input[name="username"]').type('trendschau')
+    cy.get('input[name="password"]').type('password')
+
+    cy.get('form').submit()
+    cy.url().should('include','/tm/content')
+    cy.getCookie('typemill-session').should('exist')
+
+    cy.visit('/tm/content/visual')
+    cy.url().should('include','/tm\/content\/visual')
+  })
+
+  beforeEach(function () 
+  {
+    Cypress.Cookies.preserveOnce('typemill-session')
+  })
+
+  it('creates new page', function()
+  {
+    // click on add element
+    cy.get('.addNaviItem > a').eq(0).click()
+
+    /* Check dublicates cannot be made */
+
+    /* Check new page can be created */
+    cy.get('.addNaviForm').within(($naviform) =>{
+        
+        /* add Testpage into input */
+        cy.get('input')
+          .clear()
+          .type('Testpage')
+          .should('have.value', 'Testpage')
+
+        cy.get('.b-left').click()
+    })
+
+    /* get Navilist */
+    cy.get('.navi-list')
+      .should('contain', 'Testpage')
+      .eq(2).find('a').should(($a) => {
+          expect($a).to.have.length(5)
+          expect($a[4].href).to.include('/welcome\/testpage')
+      })
+  })
+
+  it('edits default content', function()
+  {
+    cy.visit('/tm/content/visual/welcome/testpage')
+    cy.url().should('include','/tm\/content\/visual\/welcome\/testpage')
+
+    cy.get('#blox').within(($blox) => {
+
+        /* Change Title */
+        cy.get('#blox-0').click()
+        cy.get("input")
+           .clear()
+           .type("This is my Testpage")
+
+        cy.get(".edit").click()
+        cy.get('#blox-0').should("contain", "This is my Testpage")
+
+        /* Change Text */
+        cy.get('#blox-1').click()
+        cy.get("textarea")
+           .clear()
+           .type("This is the new paragraph for the first line with some text.")
+
+        cy.get(".edit").click()
+        cy.get('#blox-1').should("contain", "new paragraph")
+
+    })
+  })
+
+  it('edits table', function()
+  {
+    cy.get('#blox').within(($blox) => {
+        /* Get Format Bar */
+        cy.get('.format-bar').within(($formats) => {
+
+          /* Edit Table */
+          cy.get("button").eq(4).click()
+          cy.get("table").within(($table) => {
+
+            /* edit table head */
+            cy.get("tr").eq(1).within(($row) => {
+              cy.get("th").eq(1).click()
+                .clear()
+                .type("first Headline")
+              cy.get("th").eq(2).click()
+                .clear()
+                .type("Second Headline")
+             })
+
+            /* edit first content row */
+            cy.get("tr").eq(2).within(($row) => {
+              cy.get("td").eq(1).click()
+                .clear()
+                .type("Some")
+              cy.get("td").eq(2).click()
+                .clear()
+                .type("More")
+             })
+
+            /* edit second content row */
+            cy.get("tr").eq(3).within(($row) => {
+              cy.get("td").eq(1).click()
+                .clear()
+                .type("Beautiful")
+              cy.get("td").eq(2).click()
+                .clear()
+                .type("Content")
+             })
+
+            /* add new column on the right */
+            cy.get("tr").eq(0).within(($row) => {
+              cy.get("td").eq(2).click()
+              cy.get(".actionline").eq(0).click()
+            })
+          })
+
+          cy.get("table").within(($table) => {
+
+            /* edit second new column head */
+            cy.get("tr").eq(1).within(($row) => {
+              cy.get("th").eq(3).click()
+                .clear()
+                .type("New Head")
+             })
+
+            /* edit second new column head */
+            cy.get("tr").eq(2).within(($row) => {
+              cy.get("td").eq(3).click()
+                .clear()
+                .type("With")
+             })
+
+            /* edit second new column head */
+            cy.get("tr").eq(3).within(($row) => {
+              cy.get("td").eq(3).click()
+                .clear()
+                .type("new Content")
+             })
+          })
+          
+          /* save table */
+          cy.get(".edit").click()
+
+        })
+
+        cy.get('#blox-2').should("contain", "Beautiful").click()
+
+        cy.get('.editactive').within(($activeblock) => {
+          cy.get('.component').should("contain", "Beautiful")
+        })
+
+    })
+  })
+
+  it('Deletes new page', function()
+  {
+    cy.visit('/tm/content/visual/welcome/testpage')
+    cy.url().should('include','/tm\/content\/visual\/welcome\/testpage')
+
+    cy.get('.danger').click()
+
+    cy.get('#modalWindow').within(($modal) => {
+      cy.get('button').click()
+    })
+
+    cy.visit('/tm/content/visual/welcome')
+    cy.get('.navi-list')
+      .not('contain', 'Testpage')
+      .eq(2).find('a').should(($a) => {
+          expect($a).to.have.length(4)
+      })    
+  })
+})
\ No newline at end of file
diff --git a/system/Settings.php b/system/Settings.php
index 45df14d..852a9bd 100644
--- a/system/Settings.php
+++ b/system/Settings.php
@@ -128,7 +128,11 @@ class Settings
     	$theme_language_file = $language . '.yaml';
     	if (file_exists($theme_language_folder . $theme_language_file))
     	{
-      		$theme_labels = $yaml->getYaml($theme_language_folder, $theme_language_file);
+      		$this_theme_labels = $yaml->getYaml($theme_language_folder, $theme_language_file);
+      		if(is_array($this_theme_labels))
+      		{
+	      		$theme_labels = $this_theme_labels;
+      		}
     	}
 
     	# loads the plugins strings of the set language
@@ -143,20 +147,20 @@ class Settings
 
         		if (file_exists($plugin_language_folder . $plugin_language_file))
         		{
-          			$plugin_labels[$name] = $yaml->getYaml($plugin_language_folder, $plugin_language_file);
+        			$this_plugin_labels = $yaml->getYaml($plugin_language_folder, $plugin_language_file);
+        			if(is_array($this_plugin_labels))
+        			{
+	          			$plugin_labels[$name] = $this_plugin_labels;
+        			}
         		}
       		}
+
       		foreach($plugin_labels as $key => $value)
       		{
         		$plugins_labels = array_merge($plugins_labels, $value);
       		}
     	}
-
-    	# Combines arrays of system languages, themes and plugins
-    	$labels = array_merge($system_labels, $theme_labels, $plugins_labels);
-
-		return $labels;
-	}
+    }
 
   	public function whichLanguage()
   	{