fixed #18 close #21