fix #31
fix #35
fix #32
fix #28
fix #30