Restructuring API to support Providers