generalized a type