generics much better