update(): add callbacks