add datasource swift implementation