fix #34
fix #37
fix #34
fix #38
fix #34 fix#35 fix#36 fix#38