Fix Providers to cache and return the same instance