attribute defaults

still unsure about proc/lambda default.call(self) approach
compare with DSL.evaluate
what is the diff ?
attributes can be added incrementally