reorganized for npm package