commit for issue #1 #2 and #3 all together