fix #37
fix #34
fix #32
fix #31
fix #22