   "Apply cmd to text. Return text as is if cmd isn't this cmd"
   [cmd text]
   (if-let [[_ fr to] (re-find (re-matcher #"^move position (\d+) to position (\d+)$" cmd))]
-    (move-position text (parse-int fr) (parse-int to))))
+    (list move-position text (parse-int fr) (parse-int to))))
 
 ;; swap position X with position Y means that the letters at indexes X
 ;; and Y (counting from 0) should be swapped.

  "Apply cmd to text. Return text as is if cmd isn't this cmd"
  [cmd text]
  (if-let [[_ fr] (re-find (re-matcher #"^rotate right (\d+) steps?$" cmd))]
    (rotate-right text (parse-int fr))))

;; rotate left/right X steps means that the whole string should be
;; rotated; for example, one right rotation would turn abcd into

  "Apply cmd to text. Return text as is if cmd isn't this cmd"
  [cmd text]
  (if-let [[_ fr to] (re-find (re-matcher #"^swap position (\d+) with position (\d+)$" cmd))]
    (list swap-position text (parse-int fr) (parse-int to))))

;; reverse positions X through Y means that the span of letters at
;; indexes X through Y (including the letters at X and Y) should be
