modified base on feedback