Feature/course refactor