refucktoring requires