refactored DAL