         new-entity (dissoc entity :hidden)]
     (assoc-in state [:entities hidden-entity] new-entity)))
 
+(defn win-game [state]
+  (q/background 90 200 21)
+  state)
+
 (def actions-map
   {[:look :window] {:text "You look outside the window and see your home, the mighty ocean." :action []}
    [:look :bucket] {:text "You see a bucket. Maybe there is something inside." :action []}
-   [:flap :window] {:text "You're too far away for that"}
+   [:look :stone] {:text "There are stones on the floor. You can easily reach them" :action []}
+   [:look :bottle] {:text "There is a bottle of wine on the floor. You can't get drunk by yourself." :action []}
+   [:look :seagull] {:text "It's a seagull looking for company!"}
+   [:look :broom] {:text "There is a broom. You wonder if it was there this whole time."}
+   [:look :window-open] {:text "The window is open. You can see the sea. You can feel the breeze."}
+   [:flap :window] {:text "You're too far away. You can't reach the window."}
    [:flap :bucket] {:text "You flap against the bucket. BÄM. The bucket falls over and stones spill on the floor." :action [unhide :stone]}
-   [:look :stone] {:text "There are stones on the floor. You can easily reach them" :action []}})
+   [:flap :stone] {:text "You flap frustratedly against the stones. That's no use."}
+   [:flap :starfish] {:text "You flap against the starfish. 'Ouch!' - it cries."}
+   [:stone :window] {:text "You throw a stone against the window. Crash! The window shatters in tiny pieces." :action [unhide :window-open]}
+   [:starfish :window] {:text "You throw the starfish against the window. It bounces back and gives you a disappointed look."}
+   [:starfish :window-open] {:text "You throw the starfish out the window." :action [unhide :seagull]}
+   [:bottle :seagull] {:text "You start drinking with the seagull. The seagull drunkenly points in the corner." :action [unhide :broom]}
+   [:bottle :starfish] {:text "You hand the bottle to the starfish. It takes a sip of wine, but it's more of a whiskey person."}
+   [:broom :window-open] {:text "You catapult yourself out of the room. FREEDOM! You won." :action [win-game]}
+   [:broom :bucket] {:text "You try to put the broom in the bucket. That's where the broom belongs, but you're not here to clean up."}
+   })
 
 (defn point-in-rect? [entity mx my]
   (and
+   (not (:hidden entity))
    (> mx (:x entity))
    (< mx (+ (:x entity) (:width entity)))
    (> my (:y entity))


(defn update-current-action [state]
  (let [last-clicked (:last-clicked state)
        todo (get actions-map last-clicked)]
    (if (and (= (count last-clicked) 2) todo)
      (let [new-state
            (assoc state :current-status (:text todo))]
        (if (> (count (:action todo)) 0)
          ((first (:action todo)) new-state (last (:action todo)))
          new-state))
      state)))

(defn update-state [state]

          :else (q/fill 255))
        (q/rect (:x entity) (:y entity) (:width entity) (:height entity))
        (q/fill 0)
        (q/text-align :left)
        (q/text (:label entity) (:x entity) (+ (:y entity) (:height entity))))))

(defn draw-entities [state]
