 									(rest local-value-list) 
 								))  ))
 				; specializations
+;; reduce f val col
 				(cond (frame-of frame-name)
-						(conj ((frame-of frame-name) :specializations 
-						;;(conj (:specializations (frame-of frame-name)
+						(reduce conj ((frame-of frame-name) :specializations )
 					 		(cond (empty? specializations) (list) :t specializations)
-						))
+						)
 					:t 	(cond (empty? specializations) (list) :t specializations))
 
 				; abstractions
 				(cond (frame-of frame-name)
-						(conj ((frame-of frame-name) :abstractions 
-						;;(conj (:abstractions (frame-of frame-name) 
+						(reduce conj ((frame-of frame-name) :abstractions )
 					 		(cond (empty? abstractions) (list) :t abstractions )
-						))
+						)
 					:t 	(cond (empty? abstractions) (list) :t abstractions ))
 ))))
 

(defn find-descendents
	"Go up the abstraction hierarchy and collect specializaionts/abstractions"
	{:test #(do
		(create-frame :abs-frame-2 (list :abs-slot-1 :abs-slot-2) (list "m" "n")    (list :test-frame-4) (list))
		(create-frame :test-frame-4 (list :test-slot-1 :test-slot-2) (list "a" "b") (list :spec-frame-2) (list :abs-frame-2) )
		(create-frame :spec-frame-2 (list :spec-slot-1 :spec-slot-2) (list "x" "z") (list)               (list :test-frame-4) )

;;;(test #'get-specializations)
;;(test #'get-feature)
(test #'find-ancestors)
(test #'find-descendents)
