lots of assignment 4