all done and working - done for assignment