fix #26
fix #27
fix #28