I wonder if there is slightly less generic middleground - what about a common superclass that we can just do trivial implementations of? I think there is an argument that having explicit names is good for newbies and we should do generics if they have a common parent i.e. pandas or are actually generic natively e.g. spark