zoom experiment
.freeze()
Split into smaller files.

Plus beginnings of immutable-js support.
Some immutable-js tests.
Work within a mutation block.