add Applicative and Functor insts