   (let [move-filter #(= looser (:looser %))
         all-moves (get-in game [:moves player])
         move (best-immediate-move-with all-moves move-filter)]
-    (transduce (map (comp count :taken)) + (second move))
-    ))
+    (move-strength move-filter move)))
 
 (defn best-move
   "[SIMPLISTIC] Return the best move for a player based on:

   * And with move scope limitation"
  [moves move-filter]
  (fast-max-key
    (fn [[point converted]]
      (transduce
        (comp (filter move-filter) (map move-strength))
        + converted))
    moves))

(defn worst-immediate-loss

  (apply max-key (memoize key-fn) coll))

(defn move-strength
  "Compute the strength of a move, based on the converted cells"
  [move-filter [move converted]]
  (transduce
    (comp
      (filter move-filter)
      (map (comp count :taken)))
    + converted))

(defn- best-immediate-move-with
  "Return the move with the highest immediate score increase:
