content provider refactoring