fix #12
fix #13
fix #14