Container work

This stuff will be moved into a library later, so I can share!