Functor and Applicative added.