added Functor.hs