first revertable implementation