done through Map