self-memoize preview_mode?