         grid  (-> world render)
         new   (-> world
                   (assoc :grid grid, :x x, :y 0, :rotations 0, :block block)
-                  (update :score + (count marked)))]
+                  (update :score + (* 100
+                                      (count marked)
+                                      (/ (count marked)
+                                         2))))]
     (if (valid? new)
       new
       (assoc new :game-over? true))))

            (drop (+ y (count block)) grid))))

(defn score [{:keys [grid] :as world}]
  (let [grid (render world)]
    (assoc world
           :grid grid
           :marked (->> grid
                        (map vector (iterate inc 0))
                        (reduce (fn [marked [i grid-line]]
                                  (if (every? (partial not= \ ) grid-line)
                                    (conj marked i)
                                    marked))
                                #{})))))

(defn clear [{:keys [grid] :as world}]
  (-> world


(defn tick! []
  (move! world-atom :down)
  (let [tick-frequency (max (- initial-tick-frequency
                               (-> world-atom deref :speed))
                            min-tick-frequency)]
    (js/setTimeout tick! tick-frequency)))

(defonce game-loop
