added free_block struct and utility methods for it