lambda1@tg says to YSITD
This is similar to the idea of typeclasses