public IShipment Start(string shipmentStr) { var shipment = _shipmentHandler.CreateShipment(shipmentStr); // Case where invalid input was provided, this will stop the program and will be outputed - Ignored if (shipment == null) { return(null); } var initialShipmentPrice = shipment.Price ?? throw new ArgumentNullException("Price is null."); _rulesHandler.ApplyRules(shipment); _discountHandler.StartDiscountFunctions(shipment, initialShipmentPrice); return(shipment); }