moved from tabs to spaces, refactored to allow non-integer grades