non-destructive extend