more generics, more rely on type converters