For performance reasons, conventional DBMSes adopt monolithic architectures. A monolithic design cripples the adaptability of a DBMS, making it difficult to customize, to meet particular requirements of different applications. In this paper, we propose to completely separate the code of concurrency control (CC) from a monolithic DBMS. This allows us to add / remove functionalities or data structures to / from a DBMS easily, without concerning the issues of data consistency. As the separation deprives the concurrency controller of the knowledge about data organization and processing, it may incur severe performance issues. To minimize the performance loss, we devised a two-level CC mechanism. At the operational level, we propose a robust scheduler that guarantees to complete any data operation at a manageable cost. At the transactional level, the scheduler can utilize data semantics to achieve enhanced performance. Extensive experiments were conducted to demonstrate the feasibility and effectiveness of our approach.