added base class for data sources