Feature/either monad