Refactoring, newtyping

Removed Typing datatype.

Temporarily newtyped Type. It's actually quite to cluttered to use in reality, but I need it so
that I can safely refactor.
Reverse argument order for check
Post-refactor remove newtype