update
Issue #20 ,#28 , #29 and #30
resolve conflit