fix #46
fix #45
fix #44
fix #42