rw: callback optional