move generics out of it