append impl