concept JG22Network is Swingable { JPanel mainPanel = jpanelWithoutLayoutManager(); new G22Network network; *(G22Network *network) { for (element : network.elements) visualizeElement(element); } void visualizeElement(G22NetworkElement element) { addAndRepaint(mainPanel, new JG22NetworkElement(element)); } void newElement { new G22NetworkElement element; element.network(network); network.elements.add(element); network.change(); visualizeElement(element); } cachedVisual withRightAlignedButtons(mainPanel, "New element", rThread newElement); }