While the first part is very easy (simply write all the required headers), we were stuck in figuring out how to raise Exceptions under specific circumstances. After a series of attempts, we found out that the order of the if statements is extremely crucial for Python to operate on the codes and find out which Exception should be raised. Then we continued working on the codes in ConsoleController, it's been a difficulty for us to design the format for the user to input as well as returning the proper error messages when the user doesn't meet the specifications given in the instruction or if it denotes an invalid move. Also, resuming the game whenever the user gives a wrong move/input took us some time to consider. Though it's a bit kicking here and there, we completed all the tasks before step5 and going to write the recursion functions next week. Before that, we should review the class notes in the last 3 weeks and get more familiar with the concept of recursion.