why don't we cache that an empty block is empty?