refactored create offer process