PA 2 r1
PA 2 r2 - comments added
PA 2 r3 - adjusted a lot of code to match grading criteria