private String selectAndSolve(String expression) throws Exception {

        if (expression.contains("(")) {
            //Redirect to bracket solver
            expression = solveExpWithBrackets(expression);

        } else if ((expression.contains(MINUS_SIGN)
                || expression.contains(PLUS_SIGN))
                && !isSciNumOrOperator(expression)) {
            //Redirect to plus minus solver
            expression = solvePlusMinus(expression);

        } else if ((expression.contains(MULTIPLY_SIGN))
                || (expression.contains(DIVIDE_SIGN))) {
            //Redirect to divide multiply solver
            expression = solveMultiplyDivide(expression);

        } else if (expression.contains(POWER_SIGN)) {
            //Redirect to power solver
            expression = solvePower(expression);

        } else {
            //Redirect to atom solver
            expression = solveAtom(expression);

        }

        return expression;
    }