Preview refactor

This is the initial work on the Preview object architecture.