added more explaining comments