generalized some return types