Refactor the callvotes datasource into a generic ajax-like datasource