   (^int id [this] id)
   (^int version [this] version)
   (^clojure.lang.Keyword type [this] (.type whale))
-  (^float length [this] (.length whale))
-  (^float weight [this] (.weight whale))
+  (^int length [this] (.length whale))
+  (^int weight [this] (.weight whale))
   (^String ocean [this] (.id ocean))
   (^int ocean-area [this] (.area ocean))
   (^int ocean-max-depth [this] (.max-depth ocean)))

       (rnd reporters)
       (rnd types)
       (rnd oceans)
       (float (/ (rand-int max-length-x-100) 100))
       (float (/ (rand-int max-weight-x-100) 100)))))


;; (def some-whales

     ^{:tag String}                  reporter
     ^{:tag clojure.lang.Keyword :immutable true} type
     ^{:tag String}                  ocean
     ^{:tag int}                     length
     ^{:tag int}                     weight]
    (fn [^Integer lhs ^Integer rhs] (- (int lhs) (int rhs))))

(def ^Model whales-model (model "Whales" whale-metadata))
