added comments everywhere!