clean up disj and conj by using higher level ops