add underscore, rewrite code, update readme