LO 5.2.1 - Use abstraction to manage complexity in programs