separate Square into subtypes