PUZZLE: Finish snapping logic