document implementation