content provider refactor