     (let [{::keys [options ex-answer ex-total-questions streak-count notes hints hints-used]
            :as    props} (om/props this)
           [opt-type _] (s/conform ::options options)
-          parent (om/parent this)
-          hints (hints props)
+          parent       (om/parent this)
+          hints        (if hints (hints props) [])
           check-answer #(do
                           (om/transact! parent `[(dcex/check-answer)
                                                  (untangled/load {:query [{:app/me ~(om/get-query UserScore)}] :marker false})]))]

  static IExercise
  (new-round [_ props]
    (let [rhytms (partition 4 (take 16 (random-bars)))
          idx (rand-int 4)
          notes (->> (nth rhytms idx)
                     (map ::vf/notes)
                     (flatten)
                     (map (comp #(vector "B4" %)
                                duration->seconds
                                ::vf/duration)))]
      (assoc props
        ::rhytms rhytms
        ::notes notes

  (new-round [_ props]
    (let [[a b :as notes] (vary-pitch props)
          distance (- b a)
          octave?  (= (js/Math.abs distance) 12)]
      (assoc props
        ::notes notes
        ::correct-answer (if octave? "yes" "no"))))
