refactor and update readme