fix #36
fix #37
fix #39 & #42
fix #41