refactor : we use a base class for common contents data source