added a rewrite of assignmet3, I'm not sure if it works because of how bad the skeleton code was