 								))  ))
 				; specializations
 				(cond (frame-of frame-name)
-						(conj ((frame-of frame-name) :specializations (first stuff)))
+						(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)))
+						(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) :specializations))
+	(:specializations (frame-of frame-name) ))
 	;;(cond (not (nil? (frame-of frame-name))) ((frame-of frame-name) :specializations)))
 
 (defn get-abstractions [frame-name]


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


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;(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") )
;;(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 "lname?:" (get-feature :new-director :lname))
(println "title?:" (get-feature :new-director :title))
(println "dbid?:" (get-feature :new-director :dbid))
;`;(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)

