Generics working. Need more testing though.