added some explanation