improve code, update README.md