Heavily documented and performed some refactoring.

Modifiers are now in their own internal object.