fix #93
fix #89
fix #87
fix #85