Finished part 2 and 3, on part 4