Developers who use languages that support pointers—such as C, C++, and so on—can speak directly to the ODBC and OLE-DB APIs. However, developers using a language such as Visual Basic need another layer. This is where the data access consumers such as _________________ come into play.