 												
 
 (defun ngender-drop-assoc-by-key (symbol key)
-  (set symbol (assoc-delete-all key (ngender-symbol-value symbol)))
+  (set symbol (ngender-assoc-delete-all key (ngender-symbol-value symbol)))
 )
 
 (defun ngender-package-archive-delete (key)


(defun ngender-load (module &rest features)
	"show we are loading (module features...) and load module using our load path"
	(if-let ( (module (ngender-normalize-module module)) )
		(let ( (features (seq-filter #'consp (mapcar #'ngender-normalize-feature features))) )
			(let ( (module+features (cons module features)) )
				(setq *ngender-modules-loading* (cons module+features *ngender-modules-loading*))
				(ngender-load-module module) ) ) ) ) ; module can pull features off loading list

(defun ngender-require (module &rest features)
	"load module with required features unless already done - used by macro ngender - order of features matters"
	(if-let ( (module (ngender-normalize-module module)) )
		(let ( (features (seq-filter #'consp (mapcar #'ngender-normalize-feature features))) )
			(unless (member (cons module features) *ngender-modules-loaded*)
				(apply #'ngender-load (cons module features)) ) ) ) )

(defmacro ngender (&rest module+features)
	(cons 'ngender-require (mapcar (lambda (x) (list 'quote x)) module+features)) )

;; Various package files will use this to ensure
;; that their required packages are loaded.
;; How could we fail gracefully?? This will not!!
(defun ngender-package-function (&rest packages)
	"ensure these packages are loaded"
	(dolist (p packages)
		(unless (package-installed-p p)
			(package-install p) ) ) )

(defmacro ngender-package (&rest packages)
	(cons 'ngender-package-function (mapcar #'ngender-a-string packages)) )

;; (macroexpand-1 '(ngender-package org))

;; ** File and Directory Support

