add DAOListener interface and supported implementation