diff --git a/src/main/java/resources/CalculatorResource.java b/src/main/java/resources/CalculatorResource.java
index d623b998bdf076974631741ce552a6a206d5977f..8d0ee050a69ea210ca94d89e44026522d0ffc280 100644
--- a/src/main/java/resources/CalculatorResource.java
+++ b/src/main/java/resources/CalculatorResource.java
@@ -13,82 +13,95 @@ import javax.ws.rs.core.MediaType;
 public class CalculatorResource {
 
     /**
-     * Method handling HTTP POST requests. The calculated answer to the expression will be sent to the client as
-     * plain/text.
+     * Method handling HTTP POST requests. The calculated answer to the expression
+     * will be sent to the client as plain/text.
+     * 
      * @param expression the expression to be solved as plain/text.
      * @return solution to the expression as plain/text or -1 on error
      */
     @POST
     @Consumes(MediaType.TEXT_PLAIN)
     @Produces(MediaType.TEXT_PLAIN)
-    public int calculate(String expression){
+    public int calculate(String expression) {
         // Removes all whitespaces
-        String expressionTrimmed = expression.replaceAll("\\s+","");
+        String expressionTrimmed = expression.replaceAll("\\s+", "");
 
         int result = -1;
 
         /*
          * .matches use regex expression to decide if a String matches a given pattern.
-         * [0-9]+[+][0-9]+ explained:
-         * [0-9]+: a number from 0-9 one or more times. For example 1, 12 and 123.
-         * [+]: the operator + one time.
-         * The total regex expression accepts for example:
-         * 12+34,
-         * 1+2,
-         * 10000+1000
+         * [0-9]+[+][0-9]+ explained: [0-9]+: a number from 0-9 one or more times. For
+         * example 1, 12 and 123. [+]: the operator + one time. The total regex
+         * expression accepts for example: 12+34, 1+2, 10000+1000
          */
-        if(expressionTrimmed.matches("[0-9]+[+][0-9]+")) result = sum(expressionTrimmed);
-        else if(expressionTrimmed.matches("[0-9]+[-][0-9]+")) result = subtraction(expressionTrimmed);
-        else if(expressionTrimmed.matches("[0-9]+[*][0-9]+")) result = multiplication(expressionTrimmed);
-        else if(expressionTrimmed.matches("[0-9]+[/][0-9]+")) result = division(expressionTrimmed);
-
+        if (expressionTrimmed.matches("^\\d+(?:\\s*[+]\\s*\\d+)*$"))
+            result = sum(expressionTrimmed);
+        else if (expressionTrimmed.matches("^\\d+(?:\\s*[-]\\s*\\d+)*$"))
+            result = subtraction(expressionTrimmed);
+        else if (expressionTrimmed.matches("^\\d+(?:\\s*[*]\\s*\\d+)*$"))
+            result = multiplication(expressionTrimmed);
+        else if (expressionTrimmed.matches("^\\d+(?:\\s*[/]\\s*\\d+)*$"))
+            result = division(expressionTrimmed);
+
+        /* System.out.println(result); */
         return result;
     }
 
     /**
      * Method used to calculate a sum expression.
+     * 
      * @param expression the equation to be calculated as a String
      * @return the answer as an int
      */
-    public int sum(String expression){
+    public int sum(String expression) {
+        System.out.println(expression);
         String[] split = expression.split("[+]");
 
-        int number1 = Integer.parseInt(split[0]);
+        int sum = 0;
+        for (String tall: split) {
+            sum += Integer.parseInt(tall);
+        }
+        return sum;
+       /*  int number1 = Integer.parseInt(split[0]);
         int number2 = Integer.parseInt(split[1]);
+        int number3 = Integer.parseInt(split[2]);
 
-        return number1 + number2;
+        return number1 + number2 + number3; */
     }
 
     /**
      * Method used to calculate a subtraction expression.
+     * 
      * @param expression the expression to be calculated as a String
      * @return the answer as an int
      */
-    public int subtraction(String expression){
+    public int subtraction(String expression) {
         String[] split = expression.split("[-]");
 
-        int number1 = Integer.parseInt(split[0]);
-        int number2 = Integer.parseInt(split[1]);
-
-        return number1 - number2;
+        int sum = 0;
+        for (String tall: split) {
+            sum -= Integer.parseInt(tall);
+        }
+        return sum;
     }
 
-    private int multiplication(String equation){
+    private int multiplication(String equation) {
         String[] split = equation.split("[*]");
 
-         int number1 = Integer.parseInt(split[0]);
-         int number2 = Integer.parseInt(split[1]);
-
-         return number1 * number2;
+        int sum = 0;
+        for (String tall: split) {
+            sum *= Integer.parseInt(tall);
+        }
+        return sum;
     }
 
-
     private int division(String equation) {
         String[] split = equation.split("[/]");
 
-        int number1 = Integer.parseInt(split[0]);
-        int number2 = Integer.parseInt(split[1]);
-
-        return number1 / number2;
+        int sum = 0;
+        for (String tall: split) {
+            sum /= Integer.parseInt(tall);
+        }
+        return sum;
     }
 }
\ No newline at end of file