category and functor - definitions