better readme and refactor