refactored proofs