finished part 2, part 3 #1 and #2