refactored basic data service to use promises