port from MooseX::Types to Type::Tiny
improved diagnostics