fix #41 #34 #23