   (let [{v-width     :width
          v-height    :height}
         (get-in state [:world :viewport])
-        [px py]      (map read-string (clojure.string/split (name place-id) #"_"))]
+        [px py]      place-id]
     [(* px v-width) (* py v-height)]))
 
 (defn +xy

        (get-in state [:world :viewport])
        ;; upper left place
        ul-place-id (xy->place-id state v-x v-y)
        [px py]      (map read-string (clojure.string/split (name ul-place-id) #"_"))]
    [ul-place-id 
     (keyword (format "%d_%d" (inc px) py))
     (keyword (format "%d_%d" px       (inc py)))
     (keyword (format "%d_%d" (inc px) (inc py)))]))

(defn viewport-xys
  [state]

  (let [{v-width     :width
         v-height    :height}
        (get-in state [:world :viewport])]
    ;(info "xy->place-id")
    ;(info x)
    ;(info v-width)
    ;(info y)
    ;(info v-height)
    [(int (/ x v-width)) (int (/ y v-height))]))

(defn get-place
  [state x y]
