New class hierarchy for PortraitViewer