Add a Functor instance