implemented abstract base dao with tests