I think I've finally settled on the kind of polymorphic layout I want for container/stream objects