Refactored ObjectSpin (2nd pass)