refactored for clarity and configurability

Cleaned up, removed a lot of deprecated code.
Added version checks.
Moved to params pattern, making defaults more obvious.
Exposed configurable parameters.

This is for the classroom module, which will replace fundamentals and advanced sometime in the next few months.