     [tgt-type tgt-name retriever]
     ))
 
-(defn select [src-model output-class-name output-model-name key-type key-name version-type version-name properties]
+(defn select [src-model output-class-name output-model-name key-name version-name properties]
   (let [metadata (. src-model getMetadata)
 	src-class (. metadata getValueClass)
 	src-types (. metadata getAttributeTypes)
 	src-names (. metadata getAttributeNames)
-	src-map (apply hash-map (interleave src-names src-types))
+	src-map (apply array-map (interleave src-names src-types))
 	;; list of [tgt-type tgt-name retriever]
 	dummy (print "src-map: ")
 	dummy (println src-map)

	view
	"org.dada.core.tmp.OutputItem2"
	"OutputModel2"
	Integer
	"key"
	Integer
	"version"
	(list
	 ["key"]
	 ["version"]
	 ["money" :name "amount"])))

  )


;; 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 array-map pvec)
	tgt-type (or (pmap :type) src-type)
	tgt-name (or (pmap :name) src-name)
	convert (or (pmap :convert) identity)
