compacted into part 1