refactor data models, updated print statements, fixed tests