working on breaking functionality out into objects