@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.