         [:ok thm-name definition metadata]))))
 
 (defn handle-thm-declaration [thm-name params ty]
-  (let [[status params] (reduce (fn [[_ params] [x ty]]
-                                  (let [[status ty'] (stx/parse-term defenv/empty-env ty)]
-                                    (if (= status :ko)
-                                      (reduced [:ko ty'])
-                                      [:ok (conj params [x ty'])]))) [:ok []] params)]
+  (let [[status params] (parse-parameters defenv/empty-env params)]
     (if (= status :ko)
       [:ko params]
       (let [[status ty'] (stx/parse-term defenv/empty-env ty)]



;;{
;; ## Implicits
;;}


          (if (not (ty/proper-type? defenv/empty-env params ty'))
            [:ko {:msg "Axiom body is not a proper type" :axiom ax-name :type ty'}]
            [:ok (defenv/->Axiom ax-name params (count params) ty')]))))))

;;{
;; ## Proofs
