service locator pattern