Generalize (~>) to be across all functors