updated again because I forgot to label each of the lines explaining their purpose.