Intermediate commit
Removed delegate protocol
Extracted 'safe' and 'async' block macros