fix  #41
#42
#44
fix #42
#43
add #45