 (defun ngender-a-quoted-symbol (x)
 	"given a string, a symbol or a quoted string or symbol, provide a quoted symbol - handy for macros"
 	(cond
-		( (and (consp x) (eq 'quote (cadr x)) (symbolp (caddr x))) x )
-		( (and (consp x) (eq 'quote (cadr x)) (stringp (caddr x))) (list 'quote (intern (caddr x))) )
+		( (and (consp x) (eq 'quote (car x)) (symbolp (cadr x))) x )
+		( (and (consp x) (eq 'quote (car x)) (stringp (cadr x))) (list 'quote (intern (cadr x))) )
 		( (symbolp x) (list 'quote x) )
 		( (stringp x) (list 'quote (intern x)) )
 		( t (ngender-warn x "symbol") ) ) )

											(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) ) ) ) )


(defmacro ngender-archive (&rest archives)


;; Emacs 27 has assoc-delete-all but we don't so we'll just have to work harder:

(if (fboundp 'assoc-delete-all)
	(defun ngender-assoc-delete-all (key alist)
		(assoc-delete-all key alist) )
	(defun ngender-assoc-delete-all (key alist)
		"replace with assoc-delete-all as soon as emacs27 is in common use!!"
		(seq-filter (lambda (x) (not (equal key (car x)))) alist) ) )

(defun ngender-move-from-to-match (src-symbol dst-symbol match)
	"destructively move first matching element from src to dst; returning dst"
