 ;; TODO :default not a good idea - would replace nulls
 ;; TODO what about type hints on lambdas ?
 (defn expand-property [src-class src-type src-name & pvec]
-  (let [pmap (apply hash-map pvec)
+  (let [pmap (apply array-map pvec)
 	tgt-type (or (pmap :type) src-type)
 	tgt-name (or (pmap :name) src-name)
 	convert (or (pmap :convert) identity)

  	output-class (apply make-class class-factory output-class-name output-properties)
	dummy (print "output-class: ")
	dummy (println output-class)
   	key-getter (make-proxy-getter output-class key-type key-name)
   	version-getter (make-proxy-getter output-class version-type version-name)
	dummy (print "version-getter: ")
	dummy (println version-getter)
   	output-getters (map (fn [property] (make-proxy-getter output-class (nth property 0) (nth property 1))) expanded-properties)
	dummy (print "output-getters: ")
	dummy (println output-getters)
	output-metadata (new GetterMetadata output-class output-types output-names output-getters)
	dummy (print "output-metadata: ")
	dummy (println output-metadata)
	view (new VersionedModelView output-model-name output-metadata key-getter version-getter)

  (. input-model getData)
  (. input-model getMetadata)

  (def view
       (select
	input-model
	"org.dada.core.tmp.OutputItem"
	"OutputModel"
	"key"
	"version"
	(list ["id" :name "key"] ["version"] ["amount" :name "money"])
	))
  (insert metamodel view)

  (def item5 (make-instance input-class 3 2 2 6.0))
