rewrote handle_first to use find_free_blocks(memory)