irefactored create method