     tl)
   (-bottom-right [_]
     br)
+  (-top-right [_]
+    (let [[t l] (-vec tl)
+          [b r] (-vec br)]
+      (point t r)))
+  (-bottom-left [_]
+    (let [[t l] (-vec tl)
+          [b r] (-vec br)]
+      (point b l)))
   (-dims [_]
     (p- br tl))
   (-center [_]

  (-vec [_]
    [x y]))

(extend-protocol IPos
  clojure.lang.PersistentVector
  (-x [[x _]]
    x)


(defprotocol IBox
  (-top-left [b])
  (-top-right [b])
  (-bottom-left [b])
  (-bottom-right [b])
  (-dims [b])
  (-center [b]))

(defn box? [b]
  (satisfies? IBox b))

(defrecord Box [tl br]
  IBox
