diff --git a/src/mw_engine/heightmap.clj b/src/mw_engine/heightmap.clj
index 60e0ba1..bfcf6af 100644
--- a/src/mw_engine/heightmap.clj
+++ b/src/mw_engine/heightmap.clj
@@ -40,7 +40,7 @@
   "Set the `gradient` property of this `cell` of this `world` to the difference in
    altitude between its highest and lowest neghbours."
   [world cell]
-  (let [heights (remove nil? (map #(:altitude %) (get-neighbours world cell)))
+  (let [heights (remove nil? (map :altitude (get-neighbours world cell)))
         highest (cond (empty? heights) 0 ;; shouldn't happen
                   true (apply max heights))
         lowest (cond (empty? heights) 0 ;; shouldn't
diff --git a/src/mw_engine/utils.clj b/src/mw_engine/utils.clj
index 94ef499..3b73c3d 100644
--- a/src/mw_engine/utils.clj
+++ b/src/mw_engine/utils.clj
@@ -11,7 +11,7 @@
 
    * `n` a number, on the set of real numbers."
   [n]
-  (cond (< n 0) (- 0 n) true n))
+  (cond (neg? n) (- 0 n) true n))
 
 (defn member?
   "True if elt is a member of col."
@@ -161,7 +161,7 @@
                  (or (property downstream) default)) (first cells)
                 true downstream))))
   ([cells property]
-   (get-least-cell cells property (. Integer MAX_VALUE))))
+   (get-least-cell cells property (Integer/MAX_VALUE))))
 
 
 (defn- set-cell-property
diff --git a/src/mw_engine/world.clj b/src/mw_engine/world.clj
index c1959f0..97f4f21 100644
--- a/src/mw_engine/world.clj
+++ b/src/mw_engine/world.clj
@@ -8,7 +8,8 @@
 ;; that every cell's :x and :y properties reflect its place in the matrix.
 
 (ns mw-engine.world
-  (:use mw-engine.utils))
+  (:use mw-engine.utils)
+	(:require [clojure.string :as string :only [join]]))
 
 (defn- make-cell
   "Create a minimal default cell at x, y
@@ -27,7 +28,7 @@
   [index width height]
   (cond (= index width) nil
     true (cons (make-cell index height)
-               (make-world-row (+ index 1) width height))))
+               (make-world-row (inc index) width height))))
 
 (defn- make-world-rows [index width height]
   "Make the (remaining) rows in a world of this width and height, from this
@@ -38,7 +39,7 @@
   * `height` total height of the matrix, in cells."
   (cond (= index height) nil
     true (cons (apply vector (make-world-row 0 width index))
-               (make-world-rows (+ index 1) width height))))
+               (make-world-rows (inc index) width height))))
 
 (defn make-world
   "Make a world width cells from east to west, and height cells from north to
@@ -53,7 +54,7 @@
   "Truncate the print name of the state of this cell to at most limit characters."
   [cell limit]
   (let [s (:state cell)]
-    (cond (> (count (.toString s)) 10) (subs s 0 10)
+    (cond (> (count (str s)) limit) (subs s 0 limit)
       true s)))
 
 (defn format-cell
@@ -67,8 +68,7 @@
 (defn- format-world-row
   "Format one row in the state of a world for printing."
   [row]
-  (apply str
-         (map format-cell row)))
+  (string/join (map format-cell row)))
 
 (defn print-world
   "Print the current state of this world, and return nil.
diff --git a/test/mw_engine/heightmap_test.clj b/test/mw_engine/heightmap_test.clj
index b1b92bd..23f63fa 100644
--- a/test/mw_engine/heightmap_test.clj
+++ b/test/mw_engine/heightmap_test.clj
@@ -2,6 +2,7 @@
   (:use clojure.java.io)
   (:require [clojure.test :refer :all]
             [mw-engine.heightmap :refer :all]
+            [mw-engine.world :as world :only [make-world]]
             [clojure.math.combinatorics :as combo]))
 
 (deftest apply-heightmap-test
@@ -11,6 +12,21 @@
                  gradients (map #(:gradient %) (flatten world))]
              (is (= (count world) 9) "World should be 9x9")
              (is (= (count (first world)) 9) "World should be 9x9")
+             (is (= (count (remove nil? altitudes)) 81)
+                 "All cells should have altitude")
+             (is (= (count (remove nil? gradients)) 81)
+                 "All cells should have gradient")
+             (is (> (apply max altitudes)
+                    (apply min altitudes))
+                 "There should be a range of altitudes")
+             (is (> (apply + gradients) 0)
+                 "At least some gradients must be positive, none should be negative"))
+           ;; alternate means of making the world, same tests.
+           (let [world (apply-heightmap (world/make-world 9 9) (as-file "resources/heightmaps/test9x9.png"))
+                 altitudes (map #(:altitude %) (flatten world))
+                 gradients (map #(:gradient %) (flatten world))]
+             (is (= (count world) 9) "World should be 9x9")
+             (is (= (count (first world)) 9) "World should be 9x9")
              (is (= (count (remove nil? altitudes)) 81)
                  "All cells should have altitude")
              (is (= (count (remove nil? gradients)) 81)
diff --git a/test/mw_engine/utils_test.clj b/test/mw_engine/utils_test.clj
index e06cece..977abbb 100644
--- a/test/mw_engine/utils_test.clj
+++ b/test/mw_engine/utils_test.clj
@@ -4,6 +4,14 @@
             [clojure.math.combinatorics :as combo]
             [mw-engine.utils :refer :all]))
 
+(deftest abs-test 
+  (testing "Absolute value function"
+           (is (= (abs 0) 0) "Corner case: nothing comes of nothing, nothing ever could.")
+           (is (= (abs 1) 1) "Corner case: one is one and all alone and ever more shall be so.")
+           (is (= (abs -1) 1) "Corner case: when others are cast down and afflicted, thou shalt be able to raise them up.")
+           (is (= (abs -90371) 90371) "Random check")
+           (is (= (abs 30971) 30971) "Another random check")))
+
 (deftest get-neighbours-test
   (testing "Gross functionality of get-neighbours: checks the right number of 
             neighbours returned, doesn't actually check they're the right ones."