        (`(partial ,_)
         (list 'partial
               `(if ,(cl-second cond) ,(cl-second then) ,(cl-second else))))))
+
     ;; Remove pointless values in progn, e.g.
     ;; (progn nil (foo) (bar)) -> (progn (foo) (bar))
     (`(progn . ,exprs)
-     (setq exprs (whatif--simplify-progn-body exprs bindings))
-     (if (eq 1 (length exprs))
-         (cl-first exprs)
-       (list 'partial `(progn ,@(mapcar #'cl-second exprs)))))
+     (whatif--simplify-progn-body exprs bindings))
     
     (`(when ,cond . ,body)
      (setq cond (whatif--simplify cond bindings))

     (pcase cond
       (`(value ,value)
        (if value
            (list 'partial `(progn ,@(mapcar #'cl-second body)))
          (list 'value nil)))
       (`(partial ,_)
        (list 'partial
              `(when ,(cl-second cond)
                 ,@(mapcar #'cl-second body))))))
    (`(unless ,cond . ,body)
     (setq cond (whatif--simplify cond bindings))
     (setq body (whatif--simplify-progn-body body bindings))

    (pcase current
      (`(value ,value)
       (push (list 'value value) simplified-exprs)))
    (pcase (nreverse simplified-exprs)
      (`(,expr) expr)
      (`,exprs
       (list 'partial `(progn ,@(mapcar #'cl-second exprs)))))))

(defun whatif--values-p (forms)
  "Do all FORMS represent values?"
