 	  [name (make-proxy-getter tgt-class type name)]))
     fields)))
 
-(defn make-fields [src-class src-map props]
+(defn make-fields [src-class src-type-map src-getter-map props]
   (map (fn [prop]
 	   (let [src-name (first prop)
-		 src-type (src-map src-name)]
-	     (apply expand-property src-class src-type prop)))
+		 src-type (src-type-map src-name)
+		 src-getter (src-getter-map src-name)]
+	     (apply expand-property src-class src-type src-getter prop)))
        props))
 
 (defn select [src-model key-name version-name props & pvec]

   	tgt-version-getter (tgt-getter-map version-name)
	tgt-metadata (new GetterMetadata tgt-class tgt-types tgt-names tgt-getters)
	view (VersionedModelView. tgt-model-name tgt-metadata tgt-key-getter tgt-version-getter)
	transformer (transform src-model src-class src-map sel-getters tgt-names view tgt-class)]
    view)
  )


	tgt-model-name (or (pmap :model) (.toString (gensym "OutputModel")))
	src-metadata (. src-model getMetadata)
	src-class (. src-metadata getValueClass)
	src-names (. src-metadata getAttributeNames)
	src-types (. src-metadata getAttributeTypes)
	src-type-map (apply array-map (interleave src-names src-types)) ; name:type
	src-getters (. src-metadata getAttributeGetters)
	src-getter-map (apply array-map (interleave src-names src-getters)) ; name:getter
	fields (make-fields src-class src-type-map src-getter-map props) ; selection ([type name ...])
   	tgt-types (map (fn [field] (nth field 0)) fields)
	;; test to see if transform is needed should be done somewhere here...
   	tgt-names (map (fn [field] (nth field 1)) fields)
   	sel-getters (map (fn [field] (nth field 2)) fields)
	tgt-props (map (fn [field] [(nth field 0) (nth field 1)]) fields) ; ([type name]..)
	class-factory (new ClassFactory)
  	tgt-class (apply make-class class-factory tgt-class-name tgt-props)
