rearranged the shortcircuit evaulation to be (hopefully) more efficient