Refactoring in preparation of support for recorded shows

This is  a first step while implementing #12. Depends on #14 and #16.