diff --git a/process-spec.lisp b/process-spec.lisp
index e927358f54a537d3784ad0c7b3153ed6cda02ccc..e37bec5ca63f4781848b155c01497ae57bad3c15 100644
--- a/process-spec.lisp
+++ b/process-spec.lisp
@@ -174,25 +174,23 @@
           (clps-current-argument c) nil)))
 
 (defun parse-process-spec (spec)
-  (macrolet ((make-sequence-instance (spec-type args)
-               `(make-instance
-                 ',spec-type :processes
-                 (loop :for process :in (mapcar 'parse-process-spec ,args)
-                    :nconc (etypecase process
-                             (,spec-type (sequence-processes process))
-                             (sequence-spec (list process))
-                             (command-spec (list process)))))))
+  (labels ((make-sequence-instance (spec-type args)
+             (make-instance spec-type :processes
+              (loop :for process :in (mapcar 'parse-process-spec args)
+                    :nconc (if (typep process spec-type)
+                               (sequence-processes process)
+                               (list process))))))
     (match spec
       (`(pipe ,@args)
-        (make-sequence-instance pipe-spec args))
+        (make-sequence-instance 'pipe-spec args))
       (`(or ,@args)
-        (make-sequence-instance or-spec args))
+        (make-sequence-instance 'or-spec args))
       (`(and ,@args)
-        (make-sequence-instance and-spec args))
+        (make-sequence-instance 'and-spec args))
       (`(progn ,@args)
-        (make-sequence-instance progn-spec args))
+        (make-sequence-instance 'progn-spec args))
       (`(fork ,@args)
-        (make-sequence-instance fork-spec args))
+        (make-sequence-instance 'fork-spec args))
       (`(,_ ,@_)
         (let ((c (make-instance 'command-parse)))
           (dolist (elem spec)