Turn vi_entry into an object, so that it can be re-used with different
long-term state (history).