reconstructed version: final