 
 (defun ngender-add-package-archive-pair (symbol new-pair)
 	(let* ( (key (car new-pair)) (alist (ngender-symbol-value symbol)) (old-pair (assoc key alist)) )
-		(if (equal old-pair new-pair) t
+		(if (equal old-pair new-pair)
+			alist
 			(when old-pair
 				(warn "changing url for %s from %s to %s in %s" key (cdr old-pair) (cdr new-pair) symbol)
 				(set symbol (ngender-assoc-delete-all key alist)) )
 			(set symbol (cons new-pair (ngender-symbol-value symbol))) ) ) )
 
-;; (defvar *ngender-test-package-archive* '())
-;; (setq *ngender-test-package-archive* '())
-;; (ngender-add-package-archive-pair '*ngender-test-package-archive* '("org" . "https://orgmode.org/elpa/"))
-;; *ngender-test-package-archive*
+(let ( (the-list '*ngender-test-archive-list*)
+			 (gnu '("gnu" . "http://elpa.gnu.org/packages/"))
+			 (gnu-https '("gnu" . "https://elpa.gnu.org/packages/"))
+			 (org '("org" . "https://orgmode.org/elpa/")) )
+	(set the-list nil)
+	(ngender-test
+		`(ngender-add-package-archive-pair ',the-list ',gnu)
+		(list gnu) )
+	(ngender-test
+		`(ngender-add-package-archive-pair ',the-list ',gnu)
+		(list gnu) )
+	(ngender-test
+		`(ngender-add-package-archive-pair ',the-list ',org)
+		(list org gnu) )
+	(ngender-test
+		`(ngender-add-package-archive-pair ',the-list ',gnu-https)
+		(list gnu-https org) )
+	(makunbound the-list) )
 
 (defun ngender-add-package-archive-by-key (key)
 	(let ( (pair (assoc key *ngender-known-package-archives*)) )

					(warn "ngender-provide-function: no %s loading, doing nothing" module)
					(ngender-alist-move-from-to-key '*ngender-modules-loading* '*ngender-modules-loaded* module) ) ) ) ) )

;; file a bug with emacs in re the apparent dynamic binding
;; of free / global variables with let.  There needs to be
;; a clear way to do this so we won't be hit by software rot!!
(defun ngender-load-module (module &optional noerror nowarn)
	"load the specified module on the *ngender-load-path*"
;;	(let ( (load-prefer-newer t) ) ; causing trouble with libraries!
	(let ( )
		(let ( (success (seq-some
											(lambda (p)
												(ngender-debug-warn t "trying to load %s" (expand-file-name module p))
												(load (expand-file-name module p) t t))
											*ngender-load-path* )) )
			(ngender-debug-warn t "success = %S" success)
			(when (not success)
				(funcall (or
									 (and (not noerror) #'error)
									 (and (not nowarn) #'warn)
									 #'ngender-nothing )
					"ngender-load-module: %s not found!" module ) ) ) ) )

(defun ngender-load (module &rest features)
	"show we are loading (module features...) and load module using our load path"
	(let ( (module (ngender-normalize-module module)) )
		(when module
			(ngender-warn module "module")
			(let ( (features (seq-filter #'consp (mapcar #'ngender-normalize-feature features))) )
				(let ( (module+features (cons module features)) )
					(if (assoc module+features *ngender-modules-loading*)
						(warn "%s already in *ngender-modules-loading*" 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"
	(let ( (module (ngender-normalize-module module)) )
		(when 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)) )

											(ngender-add-package-archive-pair '*ngender-known-package-archives* pair)
											(ngender-add-package-archive-pair 'package-archives pair) ) ) )
			( (or (stringp a) (symbolp a)) (ngender-add-package-archive-by-key a) )
			( t (warn "expected archive name or pair %s" a) ) ) )
	(package-initialize)									; is this needed??
	)


(defmacro ngender-archive (&rest archives)
