 ;;----------------------------------------
 
 (defn make-splitter
-  [#^IFn src-name-fn #^Model src-model key #^IFn value-to-keys #^IFn key-to-value #^IFn view-hook]
+  [src-name-fn ^Model src-model key value-to-keys key-to-value view-hook]
   (let [src-metadata (.getMetadata src-model)
 	mutable (.getMutable (.getAttribute src-metadata key))
 	map (new ConcurrentHashMap)

	 ;; data
	 (fn []
	     (let [src-data-tuple (direct-fn)
		   [#^Model src-metamodel src-prefix #^Collection src-extra-pairs] src-data-tuple
		   dummy (trace (str "SPLIT src-extra-pairs " src-extra-pairs))
		   tgt-metamodel (model (str (.getName src-metamodel) suffix) (.getMetadata src-metamodel))
		   tgt-prefix (str src-prefix "." split-key)

;; ;; [name & options :name string :type class :convert fn :default val/fn] - TODO: :key, :version
;; ;; TODO :default not a good idea - would replace nulls
;; ;; TODO what about type hints on lambdas ?
;; (defn expand-property [^Class src-type ^Getter src-getter src-key & pvec]
;;   (let [pmap (apply array-map pvec)
;; 	tgt-type (or (pmap :type) src-type)
;; 	tgt-key (or (pmap :name) src-key)
