Distributive typeclass