refactorings (if fails pelase revert)