need to know block types before we can write them