Yeah, to me they all seem pretty tightly coupled, they all seem to require one another. `DocumentProxy` is actually listening to `SourceViewer` events, this guy has a source viewer and an editor.. Maybe they can be merged?