diff --git a/collects/mzlib/unit.ss b/collects/mzlib/unit.ss
index 84c81fc..54bb4a7 100644
--- a/collects/mzlib/unit.ss
+++ b/collects/mzlib/unit.ss
@@ -234,17 +234,23 @@
   
   
   (define-signature-form (open stx)
+    (define (build-sig-elems sig)
+      (map (λ (p c)
+             (if c #`(contracted [#,(car p) #,c]) (car p)))
+           (car sig)
+           (cadddr sig)))
     (parameterize ([error-syntax stx])
       (syntax-case stx ()
         ((_ export-spec)
          (let ([sig (process-spec #'export-spec)])
-           (with-syntax ((((int . ext) ...) (car sig))
+           (with-syntax (((sig-elem ...)
+                          (build-sig-elems sig))
                          ((renames
                            (((mac-name ...) mac-body) ...) 
                            (((val-name ...) val-body) ...))
                           (build-val+macro-defs sig)))
              (syntax->list
-              #'(int ...
+              #'(sig-elem ...
                  (define-syntaxes . renames)
                  (define-syntaxes (mac-name ...) mac-body) ...
                  (define-values (val-name ...) val-body) ...)))))