 (defmulti instantiate param-type)
 
 (defmethod instantiate :class [cls]
-  (println "instantiate: is-class = true")
   (let [member-type (symbol (replace-first (str cls) #".* " ""))
         new-obj-statement `(new ~member-type)]
     (eval new-obj-statement)))
 
-(defmethod instantiate :object [x]
-  (println "instantiate: is-class = true")
-  x)
+(defmethod instantiate :object [x] x)
 
-(defmethod instantiate :enum [x]
-  (println "Found enum")
-  x)
+(defmethod instantiate :enum [x] x)
 
 (defn setter-name [property]
   (let [x (subs property 0 1)

        setter-meta (fetch-method reflector setter)
        property-type (first (:parameter-types setter-meta))
        is-enum-property? (is-enum-class-name? property-type)]
    (println prop " Value: " current-value " -> " value)
    (println prop " Type : " (class value) " -> " property-type)
    (println "class-name "(obj->class-name value) " enum-check = " is-enum-property?)

    (let [final-val
          (match [value (obj->class-name value) property-type is-enum-property?]

    (enum? (reflect klass))))

(defn set-val [obj reflector prop value]
  (let [current-value (Reflector/invokeInstanceMethod obj
                                                      (getter-name prop)
                                                      (to-array []))
