add error handling to precondition boolean preds