watch the bi-directional relationships if you have two components directly talking to each other. for example List keeping a reference to Editor and Editor keeping a reference to the parent List. If that's absolutely needed, one should be made a weak reference. this is for memory management protection so that the garbage collector can free one side (which will release the other)