added abstract types