Redo almost all of the generics