generics support added