System design, come up with classes, object interaction, design patterns, input validation and results