make struct and use generics for subscription argument