begin to refactor rebuild course to use scheduler instead of blocking