eliminate the database dependencies of the db object in controllers
new concrete and abstract classes