Finished problem 4 and added tests