Much research in computational linguistics has concentrated on treating the individual phenomena of natural language rather than on how these treatments can be made to work together. This paper discusses four respects in which processes embodying individual treatments must be made to co-operate with one another if anaphoric expressions are to be interpreted correctly. These are the co-ordination of (1) treatments of anaphoric and non-anaphoric ambiguity in a sentence; (2) treatments of different kinds of knowledge relevant to interpretation; (3) the resolution of several anaphors in one sentence; and (4) candidate referents arising from several sources. It is argued that a flexible control structure based on numerical scoring allows the required co-operation to take place, whereas a more limited depth-first architecture seems not to allow this. The discussion is grounded in comparisons between two very different implemented systems that resolve anaphors. The first, SPAR, is an experimental system embodying the control structure argued for. The second, the SRI Core Language Engine, is a wide-coverage system intended for practical applications. Its control structure is, at the time of writing, depth-first, but planned enhancements will allow the problems discussed in the paper to be tackled, resulting in the development of a powerful and widely applicable natural processor.