fix #42, fix #56, fix #57