some refactoring
port option
update readme