implement basedao