adapt for npm demand, add a better readme