// see the AOSD 2003 paper