all of the theory is done for this pset