   (:require [cljs.core.async :as async :refer [>! <! alts! chan sliding-buffer close!]]
             [clojure.string :as str]
             [dommy.core :as dommy]
-            [frontend.async :refer [put!]]
+            [frontend.async :refer [raise!]]
             [frontend.components.common :as common]
             [frontend.components.crumbs :as crumbs]
             [frontend.components.drawings :as drawings]

    om/IWillUnmount (will-unmount [_] (scroll/deregister-fn (om/get-state owner :scroll-id)))
    om/IRender
    (render [_]
      (let [controls-ch (om/get-shared owner [:comms :controls])]
        (html
         [:section.home-potential {:class (when (om/get-state owner [:second-fig-animate]) "animate")}
          [:div.home-top-shelf]
          [:div.home-potential-content
           [:div.home-articles
            [:article {:ref "potential-article"}
             [:h1 "Look under the hood & check the bullet points."]
             [:div.home-potential-bullets
              [:ul
               [:li "Quick & easy setup"]
               [:li "Lightning fast builds"]
               [:li "Deep Customization"]
               [:li "Easy debugging"]]
              [:ul
               [:li "Smart notifications"]
               [:li "Loving support"]
               [:li "Automatic parallelization"]
               [:li "Continuous Deployment"]]
              [:ul
               [:li "Build artifacts"]
               [:li "Clean build environments"]
               [:li "GitHub Integration"]
               [:li "Free Open Source Support"]]]]]
           [:div.home-drawings
            [:figure]
            [:figure]
            [:figure drawings/draw-build-large]]]
          [:div.home-bottom-shelf
           [:a {:on-click #(put! controls-ch [:home-scroll-4th-clicked])}
            ;; "Continue" ; hold off on this line of copy, it's cleanr w/o
            (common/ico :chevron-down)]]])))))

(defn epilog [data owner {:keys [cta-visibility-callback
                                 epilog-visibility-callback

    om/IWillUnmount (will-unmount [_] (scroll/deregister-fn (om/get-state owner :scroll-id)))
    om/IRender
    (render [_]
      (html
       [:section.home-purpose {:class (when (om/get-state owner [:first-fig-animate]) "animate")}
        [:div.home-top-shelf]
        [:div.home-purpose-content
         [:div.home-drawings
          [:figure]
          [:figure]
          [:figure drawings/drawing-dashboard]]
         [:div.home-articles
          [:article {:ref "purpose-article"}
           [:h1 "Launches are dead, long live iteration."]
           [:p "We believe that rapid iteration, tight feedback loops, and team communication are the keys to a great product workflow.
                       That's why we designed the world's leading continuous integration and delivery solution.
                       Continuous integration and delivery is revolutionizing the way development teams operate by reducing barriers between your ideas and your production code.
                       Remember, it doesn't count until it ships."]
           [:p
            [:a.shopify-link {:href "/stories/shopify"}
             "See how Shopify does it"
             (common/ico :slim-arrow-right)]]]]]
        [:div.home-bottom-shelf
         [:a {:on-click #(raise! owner [:home-scroll-2nd-clicked])}
          ;; "Continue" ; hold off on this line of copy, it's cleanr w/o
          (common/ico :chevron-down)]]]))))

(defn practice [app owner]
  (reify
    om/IDisplayName (display-name [_] "Home Practice")
    om/IRender
    (render [_]
      (let [selected-customer (get-in app state/customer-logo-customer-path :shopify)
            selected-toolset (get-in app state/selected-toolset-path :languages)]
        (html
         [:section.home-practice
