 			( (funcall match (car src))	; first element matches
 				(setq rest (cdr src))			; save rest of src list
 				(set src-symbol rest)			; splice out matching cell
-				(rplaca src dst)					; attach cell with match to dst
+				(rplacd src dst)					; attach cell with match to dst
 				(set dst-symbol src) )		; set and return new dst
 			(t (let ( (next (cdr src)) )
 					 (while (and next (not (match (car next))))


(defun ngender-add-paths (symbol paths do-append)
	"prepend or append candidate directory set with directory set bound to symbol"
	(if (eq symbol 'load-path) (message "load-path += %S" paths))
	(if (numberp (car load-path)) (message "loadpath.0 = %d" (car load-path)))
	(set symbol (let ( (paths (ngender-symbol-value symbol))
										 (newbies (ngender-filter-dirs paths)) )
								(if do-append

	"filter out elements of list which fail type-test expecting them to be type-name things"
	(seq-filter (lambda (x) (ngender-validate x type-test type-name)) list) )

(defun ngender-nothing (&rest args)
	"the essential function that does nothing"
	nil )

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

(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))) )
		( (symbolp x) (list 'quote x) )
		( (stringp x) (list 'quote (intern x)) )
		( t (ngender-warn x "symbol") ) ) )

;; ** Define some functions for managing lists, sets, paths

;; *** Filtering Lists
