with everything being immutable, i can see issues with having to update many locations at once
currently if you have a single listener with functionality to do something like push a GUI, but can call it from 10 different menus, you can change which GUI is being displayed by changing values in that listener
with it being immutable, you'd have to keep a list of which objects need to be changed when you change the listener? but then you'll probably also need to change whatever is relying on those as well, so that they're updated to use the new correct object
holy duck that sounds painful
i definitely support some things being immutable, but not everything
i think i prefer creating things to be immutable if i want them to be