fix 2#, fix #3, fix #4