created layers of abstraction through functions