(wip) maybe monad in c#