I checked a bit deeper Nautilus is not implemented in Spec. But senders and implementors are and they also leak memory. Around 400 Announcers after each opening and closing. Now whenChangedDo: aBlock | block | block := [:announcement :ann | aBlock cull: announcement newValue cull: announcement oldValue cull: announcement cull: ann ]. announcer when: ValueChanged do: block can also be part of the cause of some of our problems. There are 146 senders and many of them could just be replaced by whenChanged:send:to: and whenChanged:send:to:with: Finally we were discussing with igor about the general API of spec model: We are thinking that the following patterns are bloating the interface for an not obvious gain. whenWindowChanged: aBlock window whenChangedDo: aBlock whenShortcutsChanged: aBlock <api: #event> "Set a block to value when the shortcuts block has changed" additionalKeyBindings whenChangedDo: aBlock