refactored ContentProvider