fix #75, fix #76, fix #79