reworked part 2
reworked part 3
reworked part 4
reworked part 5