+Except, as we mentioned, our implementation of the Tree monad incorporates an Optionish layer too. So `f' 2` should be not `Leaf 2` but `Some (Leaf 2)`. What if `f'` also mapped `1` to `None` and `4` to `Some (Node (Leaf 2, Leaf 4))`. Then binding the tree `Node (Leaf 1, Node (Leaf 2, Leaf 4))` to `f'` would delete thr branch corresponding to the original `Leaf 1`, and would splice in the results for `f' 2` and `f' 4`, yielding:
+
+ .
+ _|__ >>= f' ~~>
+ | |
+ 1 . .
+ _|__ _|__
+ | | | |
+ 2 4 2 .
+ _|__
+ | |
+ 2 4
+
+As always, the functions you bind an `'a tree` to need not map `'a`s to `'a tree`s; they can map them to `'b tree`s instead. For instance, we could transform `Node (Leaf 1, Node (Leaf 2, Leaf 4))` instead into `Node (Leaf "two", Node (Leaf "two", Leaf "four"))`.
+
+As we [mention in the notes](/monad_library), our monad library encapsulates the implementation of its monadic types. So to work with it you have to use the primitives it provides. You can't say:
+
+ # Tree_monad.(orig_tree >>= fun a -> match a with
+ | 4 -> Some (Node (Leaf 2, Leaf 4))
+ | _ -> None);;
+ Error: This expression has type int Tree_monad.tree option
+ but an expression was expected of type ('a, 'b) Tree_monad.m
+
+You have to instead say something like this:
+
+ # Tree_monad.(orig_tree >>= fun a -> match a with
+ | 4 -> plus (unit 2) (unit 4)
+ | _ -> zero () );;
+ - : ('_a, int) Tree_monad.m = <abstr>
+
+
+Further Reading
+---------------
+
+* This is excellent, everyone should read: [Monad Transformers Step by Step](http://www.grabmueller.de/martin/www/pub/Transformers.pdf)
+
+* Read Part III of [All About Monads](http://web.archive.org/web/20071106232016/haskell.org/all_about_monads/html/introIII.html). This link is to an archived version, the main link to haskell.org seems to be broken. Some but not all of this site has been [absorbed into the Haskell wikibook](http://en.wikibooks.org/wiki/Haskell/Monad_transformers).
+
+
+How is all this related to our tree\_monadize function?
+-------------------------------------------------------
+
+
+Recall our earlier definition of `tree_monadize`, specialized for the Reader monad: