exercise #4 added - answer partially committed.