some Functor instances could be derived