Minimal coding requirements: • 2 abstract classes • 3 interfaces • 1 use of composition • 1 use of inheritance • Meaningful class/variable names • Proper packages • equals/hashCode where needed • research & apply at least 1 Design Pattern • clear OOP concepts • draw UML diagram