First version of abstract provider and Doctrine Provider skeleton