Added provider resolver class and generic provider interface