ENH: Refactoring - abstract DAO
ENH: Refactoring of DAO layer