- merge from 98ml
- use npm as package management