Defining the generic DAO implementation