@dkubb i'm planning to do a refactoring of the DSL support classes. I mentioned it briefly in irc the other day. What i plan to do is have an immutable `Data` class and a mutable `Data::Mutable` class. The "user data collector" classes (there are 3 in substation: `Environment::DSL`, `Chain::DSL` and `Dispatcher::Registry` will initially use `Data::Mutable` instances to collect the data (this allows for decentralized collection also), and when asked to "fill the real object", i will have `Data.instance(mutable_data)` return a frozen copy of the `Data::Mutable` instance. This way we can avoid finalization, and establish a common pattern for this kind of thing.

All that said, I will keep your comment in mind when doing the refactoring.