diff --git a/src/main/java/resources/CalculatorResource.java b/src/main/java/resources/CalculatorResource.java
index 1a13e3314d7f25663b6ff16d657729527487d8e7..5a49624aeac1413b2b627c4feecd0ea6b2ec78df 100644
--- a/src/main/java/resources/CalculatorResource.java
+++ b/src/main/java/resources/CalculatorResource.java
@@ -1,5 +1,7 @@
 package resources;
 
+import org.graalvm.compiler.hotspot.stubs.DivisionByZeroExceptionStub;
+
 import javax.ws.rs.Consumes;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
@@ -38,28 +40,37 @@ public int calculate(String expression) {
      * 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);
+
+    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;
 }
 
     public int multiplication(String equation) {
     String[] split = equation.split("[*]");
+    int sum = 0;
+        for (int i = 0; i < split.length; i++) {
+            sum *= Integer.parseInt(split[i]);
+        }
 
-    int number1 = Integer.parseInt(split[0]);
-    int number2 = Integer.parseInt(split[1]);
-
-    return number1 * number2;
+    return sum;
 }
 
-    public int division(String equation) {
+    public int division(String equation){
     String[] split = equation.split("[/]");
+    try{
+        int sum = 0;
+        for (int i = 0; i < split.length; i++) {
+            sum = Integer.parseInt(split[i]);
+        }
+
+        return sum;
+    }catch (DivisionByZeroExceptionStub e){
+    }
 
-    int number1 = Integer.parseInt(split[0]);
-    int number2 = Integer.parseInt(split[1]);
-
-    return number1 / number2;
 }
 
     /**
@@ -69,11 +80,13 @@ public int calculate(String expression) {
      */
     public int sum (String expression){
         String[] split = expression.split("[+]");
+        int sum = Integer.parseInt(split[0]);
+        for (int i = 1; i < split.length; i++) {
+            sum += Integer.parseInt(split[i]);
 
-        int number1 = Integer.parseInt(split[0]);
-        int number2 = Integer.parseInt(split[1]);
+        }
 
-        return number1 + number2;
+        return sum;
     }
 
     /**
@@ -83,10 +96,12 @@ public int calculate(String expression) {
      */
     public int subtraction (String expression){
         String[] split = expression.split("[-]");
+        int sum = Integer.parseInt(split[0]);
+        for (int i = 1; i < split.length; i++) {
+            sum -= Integer.parseInt(split[i]);
+        }
 
-        int number1 = Integer.parseInt(split[0]);
-        int number2 = Integer.parseInt(split[1]);
 
-        return number1 - number2;
+        return sum;
     }
 }