Refactor location providers