fix #104
fix #100
fix #106
fix #94
fix #95
fix #103
fix #90
fix #108, fix #105
fix #107