part 2 mostly done