Fix shelf

- Split load_shelf() in smaller functions
- Cache queued series
- Small cleanups