diff --git a/debian/changelog b/debian/changelog
index 5cd6e8faecbc4815a315668375f8a9bdd4aee56e..e26b49e4820e575c93bef193c2e152bd5bf54220 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,12 @@
+cl-kmrcl (1.104-1) unstable; urgency=low
+
+  * lists.lisp: Add delete-alist and remove-alist
+
+ -- Kevin M. Rosenberg <kmr@debian.org>  Mon, 20 Jun 2011 15:55:57 -0600
+
 cl-kmrcl (1.103-1) unstable; urgency=low
 
-  * Remove UTF-8 code to allow compilation on CLISP 
+  * Remove UTF-8 code to allow compilation on CLISP
 
  -- Kevin M. Rosenberg <kmr@debian.org>  Sun, 05 Sep 2010 22:26:17 -0600
 
diff --git a/kmrcl-tests.asd b/kmrcl-tests.asd
index da7de493daeed6e0e9c086107fea166385cf8c4a..331ee74d5a2e0220cea990acd045a91414a9eec3 100644
--- a/kmrcl-tests.asd
+++ b/kmrcl-tests.asd
@@ -22,5 +22,6 @@
 (defmethod perform ((o test-op) (c (eql (find-system 'kmrcl-tests))))
   (or (funcall (intern (symbol-name '#:do-tests)
 		       (find-package '#:regression-test)))
-      (error "test-op failed")))
+      (error "test-op failed")
+      t))
 
diff --git a/kmrcl.asd b/kmrcl.asd
index da12a61d4faac5ae9320fae91e824bd7b8c514d7..e53ba6a59636fe61f6d05a471e22fb84d373ebd8 100644
--- a/kmrcl.asd
+++ b/kmrcl.asd
@@ -58,6 +58,7 @@
      (:file "os" :depends-on ("macros" "impl"))
      (:file "signals" :depends-on ("package"))
      (:file "btree" :depends-on ("macros"))
+     (:file "hash" :depends-on ("macros"))
      ))
 
 (defmethod perform ((o test-op) (c (eql (find-system 'kmrcl))))
diff --git a/lists.lisp b/lists.lisp
index ecdd003f993ec85dd20ee160f23017cb0c2eefb3..c33d845148e801d06f68524b746513023b88ba72 100644
--- a/lists.lisp
+++ b/lists.lisp
@@ -163,8 +163,8 @@
          (setf (cdr ,elem) ,val))
         (,alist
          (setf (cdr (last ,alist)) (list (cons ,akey ,val))))
-         (t
-          (setf ,alist (list (cons ,akey ,val)))))
+        (t
+         (setf ,alist (list (cons ,akey ,val)))))
        ,alist)))
 
 (defun get-alist (key alist &key (test #'eql))
@@ -175,6 +175,14 @@
   (update-alist key value alist :test test)
   value)
 
+(defun remove-alist (key alist &key (test #'eql))
+  "Removes a key from an alist."
+  (remove key alist :test test :key #'car))
+
+(defun delete-alist (key alist &key (test #'eql))
+  "Deletes a  key from an alist."
+  (delete key alist :test test :key #'car))
+
 (defun alist-plist (alist)
   (apply #'append (mapcar #'(lambda (x) (list (car x) (cdr x))) alist)))
 
diff --git a/macros.lisp b/macros.lisp
index bf47c63bb005f95e00fbe86f043e37aa296658c9..c448b92e2c5ed4817bdf644d42edd5b0762a210f 100644
--- a/macros.lisp
+++ b/macros.lisp
@@ -155,7 +155,7 @@
   `(/ (+ ,@args) ,(length args)))
 
 (defmacro with-gensyms (syms &body body)
-  `(let ,(mapcar #'(lambda (s) `(,s (gensym)))
+  `(let ,(mapcar #'(lambda (s) `(,s (gensym ,(format nil "~A-" s))))
           syms)
      ,@body))
 
diff --git a/package.lisp b/package.lisp
index f9d86335c1203e757ff6e5785a2e86204f681922..0f9bae3d0a0f8e106de9819037b403f8740ce875 100644
--- a/package.lisp
+++ b/package.lisp
@@ -142,6 +142,8 @@
    #:alistp
    #:get-alist
    #:update-alist
+   #:remove-alist
+   #:delete-alist
    #:alist-plist
    #:plist-alist
    #:update-plist
@@ -337,4 +339,7 @@
    ;; mop.lisp
    #:short-arg-cesd
    #:short-arg-dsdc
+
+   ;; hash.lisp
+   #:print-hash
    ))