As a backend guy, what I see is that I could assign an id to each editor and reference everything by the id. It's about the same thing internally, of course, but a bit more orthodox for those weirded out by objects as dictionary keys. Plus I'd probably have the file path and such on the editor object, then only labels and buttons outside the editor would be kept out of the editor objects. Voila, a pretty classical architecture.