added find and replace with replace all optional, added lazy search for performance