updated with some of part 2