fix #13 , fix #14 , fix #16