complete new proof