refactor the code
update readme