traverse -> tap -> difflet -> traverse