first part
completed code
final report