Refactored Prepare