part1 mostly done