diff --git a/free-identifier-tree-equal.rkt b/free-identifier-tree-equal.rkt
index 7576983..d48412d 100644
--- a/free-identifier-tree-equal.rkt
+++ b/free-identifier-tree-equal.rkt
@@ -62,12 +62,14 @@
                  (rec=? (struct->list a)
                         (struct->list b)))))]
     [(struct? a)
-     (rec=? (vector->immutable-vector (struct->vector a)))]
+     (and (struct? b)
+          (rec=? (vector->immutable-vector (struct->vector a))
+                 (vector->immutable-vector (struct->vector b))))]
     [(null? a) (null? b)]
     [else (equal? a b)]))
 
 (define/contract ((free-id-tree-hash default-hc) a [hc default-hc])
-  (-> (-> any/c fixnum?) (-> isyntax/c (-> isyntax/c fixnum?) fixnum?))
+  (-> (-> any/c fixnum?) (->* {isyntax/c} {(-> isyntax/c fixnum?)} fixnum?))
   (define rec-hash (free-id-tree-hash hc))
   (cond
     [(identifier? a) (hc (syntax-e #'a))]
diff --git a/traversal.hl.rkt b/traversal.hl.rkt
index 01eff8e..36f4f12 100644
--- a/traversal.hl.rkt
+++ b/traversal.hl.rkt
@@ -17,7 +17,7 @@
                                 values)
                      (only-in racket/base values)
                      (subtract-in racket/contract typed/racket/base)
-                     phc-toolkit
+                     (except-in phc-toolkit generate-temporary)
                      phc-toolkit/untyped-only
                      remember))
 @(unless-preexpanding