I'm also sceptical about this, regardless of whether it sounds like a good idea now. Adding a function to a typeclass is trivial, removing it later far from it (see fail, some, many). On the other hand, are there reasons not to create > class Functor f => FunctorC f where > fmapC :: Coercible a b => f a -> f b instead? David/quchen