gradebook refactor