public override double?performOperation(ICalculationOperation operation) { CalculationOperation.SecondArgument = operation.SecondArgument; CalculationOperation.Operation(); double result = CalculationOperation.Result.Value; calculatorUser.CalculatorHistory?.AddToHistory(CalculationOperation); if (!(operation is EqualsOperation)) { operation.FirstArgument = CalculationOperation.Result; CalculationOperation = operation; reset = true; } else { calculatorUser.CalculatorState = new InitialCalculatorState(calculatorUser); } return(result); }