fix #7
fix #6
fix #5
fix #3
fix #2
fix #1