Hello guys We were browsing code with marcus and I realized something quite funny about Morphic. Morphic is somehow close to seaside for the following point: There is a list that contains the children. In Seaside you have to return a list containing the children components too. Now this is really interesting to see that a lot of complexity in Morphic code comes from the fact that the programmers avoided to have an instance variable for an element to the pretext that the element was already in the submorphs list. Then you end up with code like label: aString | oldLabel m | (oldLabel := self findA: StringMorph) ifNotNil: [oldLabel delete]. m := StringMorph contents: aString font: TextStyle defaultFont. self extent: m extent + (borderWidth + 6). m position: self center - (m extent // 2). self addMorph: m. m lock label | s | s := ''. self allMorphsDo: [:m | (m isKindOf: StringMorph) ifTrue: [s := m contents]]. ^ s instead of label ^ label label: aString .... where you have to query the submorph of the right kind.... Marcus was mentioning to me that Morphic is a bit like applying GraphTraversal that the law of demeter guy loves so much. And we see the results, an ugly code all over the places. So I will certainly play a bit with this design difference to see what it makes. But I'm sure now it makes a big difference. stef