finished part 1, no testing