added caret and tilde support à la npm