use module pattern,fix #7