Start with shot abstraction.
Reimplement PortalCamera features with Shot abstraction except InteractionSpace handling.