 		(doseq [s (get-specializations frame-name)] (print-frame s))
 		(doseq [a (get-abstractions frame-name)] (print-frame a)) )) )
 
-(defn find-ancestors
+(defn find-relatives
 	"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) )
-		(println "ANCESTORS abs " (find-ancestors :abs-frame-2))
-		(println "ANCESTORS test" (find-ancestors :test-frame-4))
-		(println "ANCESTORS spec" (find-ancestors :spec-frame-2))
-		(assert (= (find-ancestors :abs-frame-2), #{:abs-frame-2}))
-		(assert (= (find-ancestors :test-frame-4), #{ :abs-frame-2 :test-frame-4}))
-		(assert (= (find-ancestors :spec-frame-2), #{ :spec-frame-2 :abs-frame-2 :test-frame-4 }))
-	)}
-	[frame-name ]
+	[frame-name  traverse-fun]
 		(loop [	loop-frame frame-name 
 				ancestor-set #{} 
 				visited-set #{frame-name} ]
 				(let [new-ancestor-set 
 						(difference 
 							(conj 
-								(reduce conj ancestor-set	(get-abstractions loop-frame) )
+								(reduce conj ancestor-set	(traverse-fun loop-frame) )
 								loop-frame )
 							nil)]
 					(cond 

							(first (difference new-ancestor-set visited-set) )
							new-ancestor-set
							(conj visited-set loop-frame) )))))


(defn get-feature

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