initial versions
and part 3 homework