@Michael: The composition the functor must preserve is composition in \$$\mathcal{C}^{op}\times \mathcal{C}\$$

How does this composition work? It takes two pairs of morphisms:

> \$$(f, g)\$$ where \$$f : a' \rightarrow a\$$ and \$$g : b \rightarrow b'\$$

> \$$(f', g')\$$ where \$$f' : a'' \rightarrow a'\$$ and \$$g : b' \rightarrow b''\$$

and returns the composite pair:

> \$$(f\circ f', g'\circ g)\$$ where \$$f\circ f' : a'' \rightarrow a\$$ and \$$g'\circ g : b \rightarrow b''\$$

So the rule is \$$(f', g')\circ (f, g) = (f\circ f', g'\circ g)\$$, ie the first coordinate is the "other way round".

Now what are we trying to check? We want

> \$$\mathcal{C}(f', g')\circ \mathcal{C}(f, g) = \mathcal{C}((f', g')\circ (f, g)) = \mathcal{C}(f\circ f', g'\circ g)\$$

The left hand side is a set map sending \$$k\mapsto g'\circ (g\circ k\circ f)\circ f'\$$

The right hand side is a set map sending \$$k\mapsto (g'\circ g)\circ k\circ (f\circ f')\$$

... and these two are the same by associativity.