Refactor classes based on feedback from @r00k