always return correct value
only select preview if content is present
support delete/replace