revise the block api as well.