Block-based KVO wrapper