Make shorter with generics and diagrams