add generics, code cleanup
add generics, code cleanup
add generics, code cleanup
add generics, code cleanup