First pass at an EIther monad