issue #2,#3,#4 done