Added level requirement parsing.  Plus a bunch of refactoring.