Leaves the Nothing data internal.
Makes sure tags have the correct is-Type value.
Correct structure for the tests.
Includes Either monad, makes inheritance static.