   "((comment \"setup camera\") (q/camera 200 200 200 0 0 0 0 0 -1) (q/no-fill) (comment \"draw box at [0 0 0]\") (q/box 50) (comment \"move positiion by [50 -50 0] and draw box\") (q/apply-matrix 1 0 50 0 1 -50) (q/box 50) (comment \"rotate position and move by [0 50 -50] and draw box\") (let [s (q/sin 1) c (q/cos 1)] (q/apply-matrix 1 0 0 0 0 c s 50 0 (- s) c -50 0 0 0 1)) (q/box 50))",
   :setup "()",
   :target :clj}
- {:fns ["looping?"],
+ {:fns ["redraw"],
   :ns "quil.snippets.structure",
-  :name "looping?",
-  :opts {:settings nil},
-  :draw
-  "((q/background 255) (q/fill 0) (q/text (str \"(q/looping?) = \" (q/looping?)) 10 20))",
+  :name "redraw",
+  :opts {:settings nil},
+  :draw
+  "((q/background 255) (q/fill 0) (q/text \"click to move\" 10 20) (q/rect (* (q/frame-count) 10) (+ (* (q/frame-count) 10) 40) 50 50))",
+  :setup "(q/no-loop)",
+  :target :clj}
+ {:fns ["no-loop" "start-loop" "looping?"],
+  :ns "quil.snippets.structure",
+  :name "no-loop-start-loop",
+  :opts {:settings nil},
+  :draw
+  "((q/background 255) (q/fill 0) (comment \"pause sketch on every 10th frame\") (when (zero? (rem (q/frame-count) 10)) (q/no-loop) (q/text \"paused, click to unpause\" 10 20)) (q/text (str \"(q/looping?) = \" (q/looping?)) 10 40) (q/text (str \"frame: \" (q/frame-count)) 10 60))",
+  :setup "()",
+  :target :clj}
+ {:fns ["exit"],
+  :ns "quil.snippets.structure",
+  :name "exit",
+  :opts {:settings nil},
+  :draw
+  "((q/background 255) (q/fill 0) (comment \"exit sketch on 50th frame\") (q/text (str \"countdown \" (- 50 (q/frame-count))) 20 20) (when (= 50 (q/frame-count)) (q/exit)))",
   :setup "()",
   :target :clj}
  {:fns ["delay"],

  :name "save",
  :opts {:renderer :p3d, :settings nil},
  :draw
  "((q/camera 150 150 150 0 0 0 0 0 1) (q/box 100) (q/save \"generated/box.png\"))",
  :setup "()",
  :target :cljs}
 {:fns ["point-light"],

  :name "save",
  :opts {:renderer :p3d, :settings nil},
  :draw
  "((q/camera 150 150 150 0 0 0 0 0 1) (q/box 100) (q/save \"generated/box.png\") (comment \"stop sketch after saving image\") (comment \"otherwise it will show save dialog\") (comment \"on every iteration\") (q/exit))",
  :setup "()",
  :target :clj}
 {:fns ["begin-raw" "end-raw"],
