DAL refactoring + more tests