Work2 is finished, but I'm still not too sure about the free_list function.