refactored out dependence on Generics.Annotation