     (add-to-list 'geiser-impl--impls impl)))
 
 (defun geiser-impl--unregister (impl)
-  (setq geiser-impl--impls (remove impl geiser-impl--impls)))
+  (setq geiser-impl--impls (remove impl geiser-impl--impls))
+  (ignore-errors (unload-feature (geiser-impl--impl-feature impl))))
 
 (defvar geiser-impl--default-implementation
   geiser-impl-default-implementation)

      (customize-save-variable
       'geiser-impl-installed-implementations (cons impl current)))))


;;; Unload support

  "Register a new Scheme implementation."
  (interactive)
  (let ((current geiser-impl-installed-implementations)
        (impl (geiser-impl--read-impl "New Scheme implementation: " nil t)))
    (unless (geiser-impl--register impl)
      (error "geiser-%s.el not found in load-path" impl))
    (when (and (not (memq impl current))
