A somewhat-complete version handling axioms. UNTESTED!