Add Generics.
Finish Generics