Added lots of ToArray()s to avoid problems apply amendments to components
who are subsequently re-initialised