update README and refactoring