Error handling with Monads

Under Construction