First try to implement provider framework.