building up if-not-monad (unfinished)