fix #23
fix #24
fix #25