initial implment of NPM