added generics to common/client