add copy, move, advance