add Replace
optimise Replace
optimise Replace