fix #13 fix #14 fix #15