added the first implementation
added npm metadata