Type-defined blocks with same signatures

I decided to break my previous pull-request into smaller pieces so you can merge the simple improvements and leave for later the more controversial changes. :)