make the block methods all static
add reader-writer locks