     (start-client "Cetacea")))
 
 (def attributes
-     (list 
+     (list
+      :id (Integer/TYPE)
+      :version (Integer/TYPE)
       :time DateMidnight
-      :version (Integer/TYPE)
       :type String
       :length (Float/TYPE)
       :weight (Float/TYPE)))

;;----------------------------------------

(def longer-whales-weight
     (dtransform longer-whales "weight" :time :version :time :version :weight))

(def #^Model heavier-whales-length
     (dtransform heavier-whales "length" :time :version :time :version :length))

;;----------------------------------------
;; demonstrate transformation - a synthetic field - metric tons per metre

;; simplify splitting - Sparse splitting should use Object keys, not only int
;; transform needs to suppport synthetic attributes

;; create some whales...
(time
 (doall
  (let [batcher (Batcher. 999 1000 (list whales))
	#^Creator creator (.getCreator whale-metadata)
	max-length-x-100 (* max-length 100)
	max-weight-x-100 (* max-weight 100)]
    (pmap
     (fn [id]
	 (insert
	  whales ;; batcher
	  (.create
	   creator
	   (into-array
	    Object
	    [id
	     0
	     (DateMidnight. (+ (rand-int 10) 2000)
			    (+ (rand-int 12) 1)
			    (+ (rand-int 28) 1))
	     (rnd types)
	     (/ (rand-int max-length-x-100) 100)
	     (/ (rand-int max-weight-x-100) 100)]))))
     (range num-whales)))))

(println "LOADED: " num-whales)


;; need some form of pluggable sorting algorithm
