Give a better error when things are different
Add examples for monad1
Minor refactoring
Add monad2 example
Updates to the docs