added classes from assignment 3 and given classes
added rest of changes not included in last commit