block and chunk implementation