Issue #20 ,#28 , #29 and #30