I'm not crazy about referencing self within the block to create changes. On OS X, NSObject supports keypath-to-keypath bindings, which can be processed with NSValueTransformer (a relic of the pre-blocks era, I suppose). Something like that, using blocks instead of value transformers would keep the processing functions pure (transformation functions, then) would be ideal, I think.<p>In the second part they do something like this, but the syntax is just strange to me, compared to: <a href="https://developer.apple.com/library/mac/documentation/cocoa/reference/ApplicationKit/Protocols/NSKeyValueBindingCreation_Protocol/Reference/Reference.html#//apple_ref/occ/instm/NSObject/bind:toObject:withKeyPath:options" rel="nofollow">https://developer.apple.com/library/mac/documentation/cocoa/...</a>: