added a plugin-like infrastructure for database back ends