add a protocal of datasource