decoupled classes
separated the printing from the object classes