With clever use of revisions, we could eliminate the preview system entirely from the codebase. Here's how it would work. If a user clicks Preview, it creates a new revision but does not mark it as the current revision. The preview seen is the new revision rendered. If a user clicks Save, it creates a new revision *and* marks it as the live one. Optionally, we could then delete the interim preview revisions. Another advantage to this is that a user can work on a node, preview it, and have their work saved. If a user comes back and edits the node with unsaved previews, they can choose to work from the latest preview or the latest public revision. I know Drupal 6 goes a long way to fixing previews, but this would eliminate all inconsistency.