provide a static function to get datasource