add provider and add require-dev and fix the d() bug