Finished all functions other than make_move