support for blocks, and some methods that can use them