handle subtypes