either, try and monads