 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
-(print-frame nil)
-(create-frame :empty-person (list :fname :lname :mi)  nil  )
-(print-frame :empty-person)
-(println "empty person:")
-(print-frame :empty-person)
-(println "--------------")
+;;(print-frame nil)
+;;(create-frame :empty-person (list :fname :lname :mi)  nil  )
+;;(print-frame :empty-person)
+;;(println "empty person:")
+;;(print-frame :empty-person)
+;;(println "--------------")
 
-(create-frame :new-person (list :fname :lname :mi) (list "Bob" "Jones" "X") nil nil)
-(println "new person:")
-(print-frame :new-person)
-(println "last name of new person:")
-(println (base-slot :new-person :lname))
-(println "--------------")
+(create-frame :new-person (list :fname :lname :mi) (list "Bob" "Jones" "X") )
+;;(println "new person:")
+;;(print-frame :new-person)
+;;(println "last name of new person:")
+;;(println (base-slot :new-person :lname))
+;;(println "--------------")
 
 (create-frame :base-thing (list :dbid :mode) (list 123 :test))
 (create-frame :new-director (list :company :title :salary) (list "The" "Director" 1000000) :new-person :base-thing)
-(println "director with base-thing as abstraction, and new-person as specialization")
-(print-frame :new-director)
-(println "--------------")
-(println "specializations:" (get-specializations :new-director))
-(println "THIS IS NULL ?print-frame of specializations") (print-frame (first(get-specializations :new-director)))
-(print-frame :base-thing)
-(println "------------_________________--")
-(println "abstractions:" (get-abstractions :new-director))
-(println "print-frame of abstractions") (print-frame (first(get-abstractions :new-director)))
-(print-frame :new-person)
-(println "------------_________________--")
-(println "------------_________________--")
-(print-frame :new-director)
-(println "------------_________________--")
-(println "------------_________________--")
-(println "_________________")
+;;(println "director with base-thing as abstraction, and new-person as specialization")
+;;(print-frame :new-director)
+;;(println "--------------")
+;;(println "specializations:" (get-specializations :new-director))
+;;(println "THIS IS NULL ?print-frame of specializations") (print-frame (first(get-specializations :new-director)))
+;;(print-frame :base-thing)
+;;(println "------------_________________--")
+;;(println "abstractions:" (get-abstractions :new-director))
+;;(println "print-frame of abstractions") (print-frame (first(get-abstractions :new-director)))
+;;(print-frame :new-person)
+;;(println "------------_________________--")
+;;(println "------------_________________--")
+;;(print-frame :new-director)
+;;(println "------------_________________--")
+;;(println "------------_________________--")
+(println "lname?:" (get-feature :new-director :lname))
 (println "title?:" (get-feature :new-director :title))
-(println "_________________")
-(println "lname?:" (get-feature :new-director :lname))
-(println "_________________")
 (println "dbid?:" (get-feature :new-director :dbid))
-(println "_________________")
+;`;(println "------------_________________--")
+;(println "spec" (get-specializations :new-director))
+;(println "xx-----")
+(println  (map (fn [x]  (get-feature x :lname))
+	(get-specializations :new-director)))
+(println "-----xx")
+;(println "get frame ----\\/\\/\\/----")
+;(print-frame :new-director)
+


;; TODO 
;; - abstractions and specializatons are linked lists, you only go up or down one level and then that frame tells you the next level up/down
;;   - working on adding the abs when you add a spec, and vice-versa (see START HERE)
;; ------------ not getting both, crashes
;; - switch from defstructs to the new thing...records
;; - features not slots

(defstruct frame :name :features :specializations :abstractions)


								))  ))
				; specializations
				(cond (frame-of frame-name)
						(conj ((frame-of frame-name) :specializations 
							;(first stuff)
					 		(cond (empty? stuff) (list) :t (list (first stuff)))
						))
					:t 	(cond (empty? stuff) (list) :t (list (first stuff))))

				; abstractions
				(cond (frame-of frame-name)
						(conj ((frame-of frame-name) :abstractions 
							;(second stuff)
					 		(cond (empty? stuff) (list) :t (list (second stuff)))
						))
					:t 	(cond (empty? stuff) (list) :t (list (second stuff))))
))))

(defn get-specializations [frame-name]
	(:specializations (frame-of frame-name) ))
	;;(cond (not (nil? (frame-of frame-name))) ((frame-of frame-name) :specializations)))

(defn get-abstractions [frame-name]
