This is assignment 2 for TP2.