diff --git a/src/main/java/resources/CalculatorResource.java b/src/main/java/resources/CalculatorResource.java
index fa9cb6889a8d3fde53cf2465e15e2ca06e605ba8..d7cedcc4d0e10b1ff3268dcc4c66a254c098cbf4 100644
--- a/src/main/java/resources/CalculatorResource.java
+++ b/src/main/java/resources/CalculatorResource.java
@@ -37,10 +37,10 @@ public class CalculatorResource {
          * 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);
 
         return result;
     }
@@ -52,11 +52,13 @@ public class CalculatorResource {
      */
     public int sum(String expression){
         String[] split = expression.split("[+]");
+        int length = len(split)
 
-        int number1 = Integer.parseInt(split[0]);
-        int number2 = Integer.parseInt(split[1]);
-
-        return number1 + number2;
+        for(int i = 0; i<length; i++){
+            int number = Integer.parseInt(split[i]);
+            int sum += number
+        }
+        return sum;
     }
 
     /**
@@ -66,28 +68,34 @@ public class CalculatorResource {
      */
     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 length = len(split)
+        
+        for(int i = 0; i<length; i++){
+            int number = Integer.parseInt(split[i]);
+            int result -= number
+        }
+        return result;
     }
 
     public int multiplication(String expression){
         String[] split = expression.split("[*]");
+        int length = len(split)
 
-        int number1 = Integer.parseInt(split[0]);
-        int number2 = Integer.parseInt(split[1]);
-
-        return number1 * number2;
+        for(int i = 0; i<length; i++){
+            int number = Integer.parseInt(split[i]);
+            int result *= number
+        }
+        return result;
     }
 
     public int division(String expression){
         String[] split = expression.split("[/]");
+        int length = len(split)
 
-        int number1 = Integer.parseInt(split[0]);
-        int number2 = Integer.parseInt(split[1]);
-
-        return number1 / number2;
+        for(int i = 0; i<length; i++){
+            int number = Integer.parseInt(split[i]);
+            int result /= number
+        }
+        return result;
     }
 }