constructor parameters need extract generics too