fix #90
fix #55 fix #92 fix #93 fix #47