completed (technically, but not well) with part2