nicely done, would have loved to see some velocity-based puzzles where you (or the boxes) keep the velocity when the loop restarts, and that remaining velocity would be required