work on generics
clean up