Allow test to be undefined
this shortens the effort to create a new type name by not
having to define a test.
tidy
fix subtyping by name