we don't need CalculatorHandler::perform to be virtual