functionality complete. Time to refactor