diff --git a/info4/kapitel-8/Interpreter/test_goto_interpreter.py b/info4/kapitel-8/Interpreter/test_goto_interpreter.py
index 84a911ebe4ab4a6c242aafd448304d10733d9d45..bb04283bed7eb3505714a7fc816fd23fd38966d0 100644
--- a/info4/kapitel-8/Interpreter/test_goto_interpreter.py
+++ b/info4/kapitel-8/Interpreter/test_goto_interpreter.py
@@ -11,33 +11,27 @@ def input_exit(prompt):
     return "EXIT"
 
 
-def init_without_tokens(self, regex_to_token, program):
-    self.regex_to_token = {}
-    self.program = program
-    self.current_position = 0
-
-
 class GOTOInterpreterTest(TestCase):
     def test_assignment_default_zero(self):
-        self.assertEqual(interpret('M1:x0:=x0 + 0;M2:HALT;'), 0)
-        self.assertEqual(interpret('M1:x0:=x1 + 0;M2:HALT;'), 0)
-        self.assertEqual(interpret('M1:x0:=x2 + 0;M2:HALT;'), 0)
+        self.assertEqual(0, interpret('M1:x0:=x0 + 0;M2:HALT;'))
+        self.assertEqual(0, interpret('M1:x0:=x1 + 0;M2:HALT;'))
+        self.assertEqual(0, interpret('M1:x0:=x2 + 0;M2:HALT;'))
 
     def test_assignment_non_negative(self):
-        self.assertEqual(interpret('M1:x0:=x0-1;M2:HALT;'), 0)
-        self.assertEqual(interpret('M1:x0:=x1-1;M2:HALT;'), 0)
-        self.assertEqual(interpret('M1:x0:=x2-6;M2:HALT;'), 0)
+        self.assertEqual(0, interpret('M1:x0:=x0-1;M2:HALT;'))
+        self.assertEqual(0, interpret('M1:x0:=x1-1;M2:HALT;'))
+        self.assertEqual(0, interpret('M1:x0:=x2-6;M2:HALT;'))
 
     def test_assignment_number(self):
-        self.assertEqual(interpret('M1:x0:=5;M2:HALT;'), 5)
-        self.assertEqual(interpret('M1:x0:=2;M2:HALT;'), 2)
-        self.assertEqual(interpret('M1:x0:=3;M2:HALT;'), 3)
+        self.assertEqual(5, interpret('M1:x0:=5;M2:HALT;'))
+        self.assertEqual(2, interpret('M1:x0:=2;M2:HALT;'))
+        self.assertEqual(3, interpret('M1:x0:=3;M2:HALT;'))
 
     def test_assignment_variable(self):
-        self.assertEqual(interpret('M1:x0:=x0+1;M2:HALT;'), 1)
-        self.assertEqual(interpret('M1:x0:= 5; M2:x0:=x0-1; M3:HALT;'), 4)
-        self.assertEqual(interpret('M1:x0:=x1-1; M2:x0:=x0+1; M3:HALT;'), 1)
-        self.assertEqual(interpret('M1:x0:=4; M2:x0:= x0 − 1; M3:HALT;'), 3)
+        self.assertEqual(1, interpret('M1:x0:=x0+1;M2:HALT;'), 1)
+        self.assertEqual(4, interpret('M1:x0:= 5; M2:x0:=x0-1; M3:HALT;'))
+        self.assertEqual(1, interpret('M1:x0:=x1-1; M2:x0:=x0+1; M3:HALT;'))
+        self.assertEqual(3, interpret('M1:x0:=4; M2:x0:= x0 − 1; M3:HALT;'))
 
     def test_assignment_wrong_syntax(self):
         with self.assertRaises(SyntaxError):
@@ -62,16 +56,16 @@ class GOTOInterpreterTest(TestCase):
             interpret('M1:x0:=xj+1;M2:HALT;')
 
     def test_goto_skip_lines(self):
-        self.assertEqual(interpret('M1:x0:=2;M2:GOTO M4;M3:x0:=0;M4:HALT;'), 2)
-        self.assertEqual(interpret('M1:x0:=3;M2:GOTO M5;M3:GOTO M1;M4:x0:=5;M5:HALT;'), 3)
-        self.assertEqual(interpret('M1:GOTO M3;M2:x0:=x2+5;M3:HALT;'), 0)
+        self.assertEqual(2, interpret('M1:x0:=2;M2:GOTO M4;M3:x0:=0;M4:HALT;'))
+        self.assertEqual(3, interpret('M1:x0:=3;M2:GOTO M5;M3:GOTO M1;M4:x0:=5;M5:HALT;'))
+        self.assertEqual(0, interpret('M1:GOTO M3;M2:x0:=x2+5;M3:HALT;'))
 
     def test_if(self):
-        self.assertEqual(interpret('M1:x2:=10;' +
-                                   'M2:IF x2=0 THEN GOTO M6;' +
-                                   'M3:x0:=x0+1;M4:x2:=x2-1;' +
-                                   'M5:GOTO M2; M6:HALT;'), 10)
-        self.assertEqual(interpret('M1:IF x0=5 THEN GOTO M4;M2:IF x0=2 THEN GOTO M4;M3:x0:=x0+1;M4:HALT;'), 1)
+        self.assertEqual(10, interpret('M1:x2:=10;' +
+                                       'M2:IF x2=0 THEN GOTO M6;' +
+                                       'M3:x0:=x0+1;M4:x2:=x2-1;' +
+                                       'M5:GOTO M2; M6:HALT;'))
+        self.assertEqual(1, interpret('M1:IF x0=5 THEN GOTO M4;M2:IF x0=2 THEN GOTO M4;M3:x0:=x0+1;M4:HALT;'))
 
     def test_syntax_missing_operator(self):
         with self.assertRaises(SyntaxError):
@@ -94,19 +88,19 @@ class GOTOInterpreterTest(TestCase):
             interpret('M1: GOTO M3; M3:HALT;')
 
     def test_linebreaks(self):
-        self.assertEqual(interpret('''
+        self.assertEqual(0, interpret('''
         M1:x1:=2;
         M2: IF x1=2 THEN GOTO M4;
         M3:HALT;
-        M4:GOTO M3;'''), 0)
+        M4:GOTO M3;'''))
 
     @mock.patch('loopinterpreter.input', side_effect=input_continue)
     def test_break(self, custom_input):
-        self.assertEqual(interpret('M1:x0:=2;BREAK M2:HALT;'), 2)
+        self.assertEqual(2, interpret('M1:x0:=2;BREAK M2:HALT;'))
 
     @mock.patch('loopinterpreter.input', side_effect=input_exit)
     def test_break_exit(self, custom_input):
-        self.assertEqual(interpret('M1:GOTO M1; BREAK'), -1)
+        self.assertEqual(-1, interpret('M1:GOTO M1; BREAK'))
 
     def test_assignment_missing_tokens(self):
         with self.assertRaises(SyntaxError):
@@ -127,7 +121,7 @@ class GOTOInterpreterTest(TestCase):
             interpret('M1: GOTO M3; M2: x1 := x2 - M3: HALT;')
         with self.assertRaises(SyntaxError):
             interpret('M1: GOTO M3; M2: x1:= x2 + 1 M3: HALT;')
-    
+
     def test_goto_missing_tokens(self):
         with self.assertRaises(SyntaxError):
             interpret('M1:GOTO :HALT;')
@@ -146,7 +140,7 @@ class GOTOInterpreterTest(TestCase):
             interpret('M1: GOTO M2;')
         with self.assertRaises(SyntaxError):
             interpret('M1:GOTO M3; M2: GOTO M4; M3:HALT;')
-        
+
     def test_halt_missing_tokens(self):
         with self.assertRaises(SyntaxError):
             interpret('M1:HALT M2:HALT;')
@@ -174,7 +168,7 @@ class GOTOInterpreterTest(TestCase):
             interpret('M1:GOTO M3; M2: IF x0 = 0 GOTO M2; M3:HALT;')
         with self.assertRaises(SyntaxError):
             interpret('M1:GOTO M3; M2: IF x3 = 5 THEN M2; M3:HALT;')
-            
+
     def test_line_missing_tokens(self):
         with self.assertRaises(SyntaxError):
             interpret('M1 GOTO M2; M2: HALT;')
diff --git a/info4/kapitel-8/Interpreter/test_loop_interpreter.py b/info4/kapitel-8/Interpreter/test_loop_interpreter.py
index fbcadba6218801c7007a087f0713a84e3f8a0c20..97330d8ac73d7801a32721f7f001cc4f7b46d127 100644
--- a/info4/kapitel-8/Interpreter/test_loop_interpreter.py
+++ b/info4/kapitel-8/Interpreter/test_loop_interpreter.py
@@ -19,24 +19,24 @@ def init_without_tokens(self, regex_to_token, program):
 
 class LOOPInterpreterTest(unittest.TestCase):
     def test_assignment_default_zero(self):
-        self.assertEqual(interpret('x0:=x0 + 0'), 0)
-        self.assertEqual(interpret('x0:=x1 + 0'), 0)
-        self.assertEqual(interpret('x0:=x2 + 0'), 0)
+        self.assertEqual(0, interpret('x0:=x0 + 0'))
+        self.assertEqual(0, interpret('x0:=x1 + 0'))
+        self.assertEqual(0, interpret('x0:=x2 + 0'))
 
     def test_assignment_non_negative(self):
-        self.assertEqual(interpret('x0:=x0-1'), 0)
-        self.assertEqual(interpret('x0:=x1-1'), 0)
-        self.assertEqual(interpret('x0:=x2-6'), 0)
+        self.assertEqual(0, interpret('x0:=x0-1'))
+        self.assertEqual(0, interpret('x0:=x1-1'))
+        self.assertEqual(0, interpret('x0:=x2-6'))
 
     def test_assignment_number(self):
-        self.assertEqual(interpret("x0:=5"), 5)
-        self.assertEqual(interpret("x0:=2"), 2)
-        self.assertEqual(interpret('x0:=3'), 3)
+        self.assertEqual(5, interpret("x0:=5"))
+        self.assertEqual(2, interpret("x0:=2"))
+        self.assertEqual(3, interpret('x0:=3'))
 
     def test_assignment_variable(self):
-        self.assertEqual(interpret('x0:=x0+1'), 1)
-        self.assertEqual(interpret('x0:= 5; x0:=x0-1'), 4)
-        self.assertEqual(interpret('x0:=x1-1; x0:=x0+1'), 1)
+        self.assertEqual(1, interpret('x0:=x0+1'))
+        self.assertEqual(4, interpret('x0:= 5; x0:=x0-1'))
+        self.assertEqual(1, interpret('x0:=x1-1; x0:=x0+1'))
 
     def test_assignment_wrong_syntax(self):
         with self.assertRaises(SyntaxError):
@@ -61,16 +61,16 @@ class LOOPInterpreterTest(unittest.TestCase):
             interpret('x0:=xj+1')
 
     def test_loop_assignment(self):
-        self.assertEqual(interpret('x1:=1; LOOP x1 DO x0:=1 END'), 1)
-        self.assertEqual(interpret('x1:=2; LOOP x1 DO x0:=x0 + 2 END'), 4)
+        self.assertEqual(1, interpret('x1:=1; LOOP x1 DO x0:=1 END'))
+        self.assertEqual(4, interpret('x1:=2; LOOP x1 DO x0:=x0 + 2 END'))
 
     def test_loop_empty_assignment(self):
-        self.assertEqual(interpret('LOOP x1 DO x0:=1 END'), 0)
-        self.assertEqual(interpret('x2:=2;LOOP x1 DO x0:=x2+1 END'), 0)
+        self.assertEqual(0, interpret('LOOP x1 DO x0:=1 END'))
+        self.assertEqual(0, interpret('x2:=2;LOOP x1 DO x0:=x2+1 END'))
 
     def test_loop_nested_assignment(self):
-        self.assertEqual(interpret('x1:=3; LOOP x1 DO x2:=x2+1; LOOP x2 DO x0:=x0+1 END END'), 6)
-        self.assertEqual(interpret('x1:=3; x2:=3; LOOP x1 DO x2:=x2-1; LOOP x2 DO x0:=x0+1 END END'), 3)
+        self.assertEqual(6, interpret('x1:=3; LOOP x1 DO x2:=x2+1; LOOP x2 DO x0:=x0+1 END END'))
+        self.assertEqual(3, interpret('x1:=3; x2:=3; LOOP x1 DO x2:=x2-1; LOOP x2 DO x0:=x0+1 END END'))
 
     def test_loop_forbidden_identifier(self):
         with self.assertRaises(SyntaxError):
@@ -119,8 +119,8 @@ class LOOPInterpreterTest(unittest.TestCase):
             interpret('x1:=1; LOOP x1 DO x2:=5 END;')
 
     def test_assignment_with_loop(self):
-        self.assertEqual(interpret('x0:=2; LOOP x0 DO x1:=x1+1 END; x0:=x1+0'), 2)
-        self.assertEqual(interpret('x1:=x1+1; LOOP x0 DO x1:=x1+1 END; x0:=x1+0'), 1)
+        self.assertEqual(2, interpret('x0:=2; LOOP x0 DO x1:=x1+1 END; x0:=x1+0'))
+        self.assertEqual(1, interpret('x1:=x1+1; LOOP x0 DO x1:=x1+1 END; x0:=x1+0'))
 
     def test_syntax_unnecessary_semicolon(self):
         with self.assertRaises(SyntaxError):
@@ -229,18 +229,18 @@ class LOOPInterpreterTest(unittest.TestCase):
             interpret('LOOP x0 DO LOOP DO x1:=x2+0 END END')
 
     def test_newlines(self):
-        self.assertEqual(interpret('''x2:=3;
-        x0:=x2+2'''), 5)
-        self.assertEqual(interpret('x1:=x1-2;\n x0:=x1+2'), 2)
+        self.assertEqual(5, interpret('''x2:=3;
+        x0:=x2+2'''))
+        self.assertEqual(2, interpret('x1:=x1-2;\n x0:=x1+2'))
 
     @mock.patch('loopinterpreter.input', side_effect=input_exit)
     def test_break_exit(self, custom_input):
-        self.assertEqual(interpret('x1:=2; BREAK x0:=2'), -1)
-        self.assertEqual(interpret('LOOP x1 DO BREAK x2:= 2 END'), -1)
+        self.assertEqual(-1, interpret('x1:=2; BREAK x0:=2'))
+        self.assertEqual(-1, interpret('LOOP x1 DO BREAK x2:= 2 END'))
 
     @mock.patch('loopinterpreter.input', side_effect=input_continue)
     def test_break_continue(self, custom_input):
-        self.assertEqual(interpret('x1:=2; LOOP x1 DO x0:=x0+2 BREAK END'), 4)
+        self.assertEqual(4, interpret('x1:=2; LOOP x1 DO x0:=x0+2 BREAK END'))
 
     @mock.patch('lexer.Lexer.__init__', init_without_tokens)
     def test_unknown_tokens(self):
diff --git a/info4/kapitel-8/Interpreter/test_while_interpreter.py b/info4/kapitel-8/Interpreter/test_while_interpreter.py
index c446fafc15e3fb7da0e951696619da1fc6b5280a..2f56a209ca67b41e6431e1206622f6ac62b5ff92 100644
--- a/info4/kapitel-8/Interpreter/test_while_interpreter.py
+++ b/info4/kapitel-8/Interpreter/test_while_interpreter.py
@@ -3,29 +3,29 @@ from test_loop_interpreter import LOOPInterpreterTest
 from unittest import mock
 
 
-def str_yes(a):
+def str_yes(prompt):
     return "J"
 
 
 class WHILEInterpreterTest(LOOPInterpreterTest):
     def test_while_assignment(self):
-        self.assertEqual(interpret('x1:=1;\n WHILE x1!=0 DO\n x0:=1;\n x1:=x1-1 END'), 1)
-        self.assertEqual(interpret('x1:=3; WHILE x1/=0 DO x0:=x0+1; x1:=x1-1 END'), 3)
+        self.assertEqual(1, interpret('x1:=1;\n WHILE x1!=0 DO\n x0:=1;\n x1:=x1-1 END'))
+        self.assertEqual(3, interpret('x1:=3; WHILE x1/=0 DO x0:=x0+1; x1:=x1-1 END'))
 
     def test_while_empty_assignment(self):
-        self.assertEqual(interpret('WHILE x1 != 0 DO x0:=2; x1:=x1-1 END'), 0)
-        self.assertEqual(interpret('WHILE x1 /= 0 DO x0:=1 END'), 0)
-        self.assertEqual(interpret('WHILE x1!=0 DO LOOP x2 DO x0:=3 END END'), 0)
+        self.assertEqual(0, interpret('WHILE x1 != 0 DO x0:=2; x1:=x1-1 END'))
+        self.assertEqual(0, interpret('WHILE x1 /= 0 DO x0:=1 END'))
+        self.assertEqual(0, interpret('WHILE x1!=0 DO LOOP x2 DO x0:=3 END END'))
 
     def test_while_nested_assignment(self):
-        self.assertEqual(interpret('x1:=2; WHILE x1!=0 DO  x2:=3;' +
-                                   'WHILE x2/=0 DO x0:=x0+1; x2:=x2-1 END; x1:=x1-1 END'), 6)
-        self.assertEqual(interpret('x1:=10; WHILE x1!=0 DO LOOP x1 DO x0:=x0+1 END; x1:=x1-1 END'), 55)
+        self.assertEqual(6, interpret('x1:=2; WHILE x1!=0 DO  x2:=3;' +
+                                      'WHILE x2/=0 DO x0:=x0+1; x2:=x2-1 END; x1:=x1-1 END'))
+        self.assertEqual(55, interpret('x1:=10; WHILE x1!=0 DO LOOP x1 DO x0:=x0+1 END; x1:=x1-1 END'))
 
     def test_while_nested_empty_assignment(self):
-        self.assertEqual(interpret('WHILE x1!=0 DO  x2:=3;' +
-                                   'WHILE x2/=0 DO x0:=x0+1; x2:=x2-1 END; x1:=x1-1 END'), 0)
-        self.assertEqual(interpret('WHILE x1!=0 DO LOOP x1 DO x0:=x0+1 END; x1:=x1-1 END'), 0)
+        self.assertEqual(0, interpret('WHILE x1!=0 DO  x2:=3;' +
+                                      'WHILE x2/=0 DO x0:=x0+1; x2:=x2-1 END; x1:=x1-1 END'))
+        self.assertEqual(0, interpret('WHILE x1!=0 DO LOOP x1 DO x0:=x0+1 END; x1:=x1-1 END'))
 
     def test_while_forbidden_identifier(self):
         with self.assertRaises(SyntaxError):
@@ -117,4 +117,4 @@ class WHILEInterpreterTest(LOOPInterpreterTest):
 
     @mock.patch('whileinterpreter.input', side_effect=str_yes)
     def test_infinite_loop(self, custom_input):
-        self.assertEqual(interpret('x1:=100000; WHILE x1 != 0 DO x0:=1; x1:=x1-1 END', 1), -1)
+        self.assertEqual(-1, interpret('x1:=100000; WHILE x1 != 0 DO x0:=1; x1:=x1-1 END', 1))