move more types to generic