refactored self.data_adapter