   (dosync
    (alter (registered-plugins plugin-manager) disj plugin)))
 
+
+;; TODO:
+;; searching for plugins in files and directories
+;; graphical plugin-browser (extra namespace)
+
 nil

    :load-hook fn-called-when-plugin-is-loaded
    :unload-hook fn-called-when-plugin-is-unloaded)

  whereas the :unload-hook is optional."
  [name & hooks]
  (let [hooks (apply hash-map hooks)]
    (if (not (contains? hooks :load-hook))

    (illegal-argument "Plugin already be loaded."))
  (dosync
   (alter (loaded-plugins) conj plugin))
  ((load-hook plugin) (base-frame plugin-manager)))

(defn unload-plugin
  "Unloads a plugin from a plugin manager."
