bootstrap containers before children
generalise change listeners