also should be able to check both sub-types are valid