fix #10
fix #11
fix #12