diff --git a/Aufgabe4Maven/pom.xml b/Aufgabe4Maven/pom.xml
index ad360818e134385bc6054a48ca49d62e588b00a5..145674626b6e3a2ecd6a072022112ddc49ce1d4b 100644
--- a/Aufgabe4Maven/pom.xml
+++ b/Aufgabe4Maven/pom.xml
@@ -27,13 +27,16 @@
             <version>5.9.0</version>
             <scope>test</scope>
         </dependency>
+
         <dependency>
-            <groupId>com.google.java.contract</groupId>
-            <artifactId>cofoja</artifactId>
-            <version>1.1-r150</version>
+            <groupId>org.valid4j</groupId>
+            <artifactId>valid4j</artifactId>
+            <version>0.5.0</version>
         </dependency>
 
 
     </dependencies>
 
-</project>
\ No newline at end of file
+
+</project>
+
diff --git a/Aufgabe4Maven/src/Evaluator.java b/Aufgabe4Maven/src/Evaluator.java
index 8dfd35b6a580810f9460cee0259d3557c9ec546e..520436931d8938f8ff207f124df2870eabeb9758 100644
--- a/Aufgabe4Maven/src/Evaluator.java
+++ b/Aufgabe4Maven/src/Evaluator.java
@@ -1,3 +1,4 @@
+import static org.valid4j.Assertive.*;
 
 
 public class Evaluator {
@@ -29,7 +30,8 @@ public class Evaluator {
 
     public float visit(AstBinaryOp node) {
 
-        visit(node.astExpression1);
+
+        //visit(node.astExpression1);
 
         switch(node.astOperator.astOperatorContent) {
 
@@ -45,6 +47,7 @@ public class Evaluator {
                 return (float) Math.pow(visit(node.astExpression1), visit(node.astExpression2));
         }
 
+        neverGetHere();
         return -111;
     }
 
diff --git a/Aufgabe4Maven/src/Lexer.java b/Aufgabe4Maven/src/Lexer.java
index 73240a07e7145bbbc20507a011af7219a42eeb00..873e2082eb1f0ade2ffd1262b0e2d950665e0a02 100644
--- a/Aufgabe4Maven/src/Lexer.java
+++ b/Aufgabe4Maven/src/Lexer.java
@@ -1,21 +1,25 @@
 import java.util.ArrayList;
 import java.util.Objects;
-import com.google.java.contract.*;
+
+
 
 public class Lexer {
 
 
-    @Requires({"s != null"})
+
+
     public ArrayList<Token> lex(String s) {
+        require(s != null);
+        require(s.length() > 0);
 
         ArrayList<String> separatedChars = separateChars(s);
 
         ArrayList<String> tokensAsStrings = buildSubstringsFromSeparatedChars(separatedChars);
 
-        return constructTokenList(tokensAsStrings);
-
-
+        ArrayList<Token> tokenList = constructTokenList(tokensAsStrings);
 
+        ensure(tokenList.size() > 0);
+        return tokenList;
     }
 
     private ArrayList<String> separateChars(String stringToTokenize) {
diff --git a/Aufgabe4Maven/src/Parser.java b/Aufgabe4Maven/src/Parser.java
index 1bfbca27c64abe396f8025815e407d258b779607..0287bed7ac45ed9381657d878b931748dfd16b2c 100644
--- a/Aufgabe4Maven/src/Parser.java
+++ b/Aufgabe4Maven/src/Parser.java
@@ -1,16 +1,20 @@
 import java.text.ParseException;
 import java.util.ArrayList;
+import java.util.Objects;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
+import static org.valid4j.Assertive.*;
 
 public class Parser {
 
-    public AstExpression parse (ArrayList<Token> tokenList) throws Exception {
+    public AstExpression parse(ArrayList<Token> tokenList) throws Exception {
+        require(tokenList.size() > 0);
 
         AstExpression root;
 
         root = parseAstExpression(tokenList);
 
+        ensure(root.astBinaryOp != null || root.astExpression != null || root.astValue != null);
         return root;
     }
 
@@ -25,6 +29,7 @@ public class Parser {
         if(tokenList.size() == 1 ) {
 
             toReturn.astValue = parseValue(tokenList);
+
             return toReturn;
 
         }
@@ -283,6 +288,7 @@ public class Parser {
     }
 
     private AstDigitWoZ parseDigitWoZ (Token digitWoZ) {
+        require(!Objects.equals(digitWoZ.tokenString, "0"));
 
         AstDigitWoZ toReturn = new AstDigitWoZ();
 
diff --git a/Aufgabe4Maven/src/Plotter.java b/Aufgabe4Maven/src/Plotter.java
index 9737b0d6c421c358ca31e8418ed10eb056916e98..5036fd7dba5b7adef0ded7b9c7a0243f23d2b6e7 100644
--- a/Aufgabe4Maven/src/Plotter.java
+++ b/Aufgabe4Maven/src/Plotter.java
@@ -68,24 +68,20 @@ class PlotterPanel extends JPanel {
                 int[] xCords = valuesToDraw.getXCords();
 
                 for(int cord : xCords) {
-
                     yCordsWithOffset[i] = (ZERO_POINT_Y + (cord * -1 * 10));
                     i++;
                 }
 
-                System.out.println(Arrays.toString(yCordsWithOffset));
 
                 int j = 0;
 
                 int[] yCords = valuesToDraw.getYCords();
 
                 for(int cord : yCords) {
-                    System.out.print("cords=" + cord);
                     xCordsWithOffset[j] = ZERO_POINT_X + (cord * 10);
                     j++;
                 }
 
-                System.out.println(Arrays.toString(xCordsWithOffset));
 
 
                 PlotterPanel.this.yCords = yCordsWithOffset;
diff --git a/Aufgabe4Maven/src/dbcTest.java b/Aufgabe4Maven/src/dbcTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..f1b58998b0cd76513406a2932a5e28cdcf1c7f3f
--- /dev/null
+++ b/Aufgabe4Maven/src/dbcTest.java
@@ -0,0 +1,24 @@
+import com.google.java.contract.Invariant;
+
+import static org.valid4j.Assertive.*;
+
+public class dbcTest {
+
+    public static void main(String[] args) {
+
+        print(null);
+
+    }
+
+    public static void print(String s) {
+
+        System.out.println(s);
+
+        int i = 5;
+
+        ensure(i > 6);
+
+
+    }
+
+}
diff --git a/Aufgabe4Maven/src/expressions.txt b/Aufgabe4Maven/src/expressions.txt
index 5c449bfc2f753afeab88e0536675f52339348df9..593ba55a0faf1f5e2c91cdc3311554ef1f09b3c5 100644
--- a/Aufgabe4Maven/src/expressions.txt
+++ b/Aufgabe4Maven/src/expressions.txt
@@ -1,3 +1,4 @@
+11111111111111111111111111111111111
 x
 x^2
 4+3+x
diff --git a/Aufgabe4Maven/src/main.java b/Aufgabe4Maven/src/main.java
index 444278943dff75930d358a653b3f2bfa0aae9b22..e720b34d4375657d8f047c976c3b427092d7850d 100644
--- a/Aufgabe4Maven/src/main.java
+++ b/Aufgabe4Maven/src/main.java
@@ -51,7 +51,13 @@ public class main {
 
 
         for(ArrayList<Token> tokenList : tokenListList) {
-            rootAstExpressions.add(p.parse(tokenList));
+
+            try {
+                rootAstExpressions.add(p.parse(tokenList));
+            } catch (Exception e) {
+                System.out.println("Invalid function received");
+            }
+
         }