unless is a horrible construct.