Derive functor and applicative instances too