added the explination of self