The purpose of the design is to model an automated system for making coffee given an order. First, a customer orders coffee from an external app which sends the order details to the order system above. The system parses the order and creates an Order object, before sending the directions to make the order to an external controller, which communicates with a coffee machine to make the order. The system chooses which controller to send the order to based on one of the three stategies: MachineType, Address, or Queue. The controller sends a response back to the system notifying it whether or not the order was was successfully made and what error occured, if any. The system sends a response back to the app if and when the coffee is done. The design is highly extendable due to the factory pattern being used to manage coffee recipes. The strategy pattern was also used to easily implement selecting which controller to send the order to, and the decorator pattern was used to model the directions for making the drink.