proof with exceptions done