implement type union functions
union improvements
add cantBeNull test
more tests