made PartialOrder a functor