part 1 mostly done