add provider generation