implement free block