cleaned up part1