 
 (defn left?
   [mv]
-  (= (.type mv) :left))
+  (= (.-type mv) :left))
 
 (defn right?
   [mv]
-  (= (.type mv) :right))
+  (= (.-type mv) :right))
 
 (defn from-either
   "Return inner value of either monad."
   [mv]
-  (.v mv))
+  (.-v mv))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Maybe

  (bind [self f]
    (-> (fn [s]
          (let [p        (mfn s)
                value    (.fst p)
                newstate (.snd p)]
            ((f value) newstate)))
        (state-t)))


  Object
  (equals [this other]
    (if (instance? Pair other)
      (and (= (.-fst this) (.-fst other))
           (= (.-snd this) (.-snd other)))
      false))

  (toString [this]
