Update implementation to use associated objects for storing block references. Allow assigning blocks after initialization and forward delegate calls to original delegate if set.