part 4 commit
part 5
part 6 commit