Monadic types - first commit