streamline cartesian definitions, add semicategory