fix #14
fix #15
fix #17