Overall architecture: coupling between game, cgame, etc?

I have decided to rewrite most of the code inside cgame, by slowly deactivating old code and migrating to newer code. However, i’m not completely sure about the Quake 3 architecture. Is there any other dependency between cgame and the engine, other than the vmMain and the events it receives?

There seems to be some tight coupling with other parts of the system, and i’m afraid about global variables and shared global state. Or is it really completely isolate and i should just care about vmMain and drawing the current frame properly?