Add support for mutationBlocks. Also, init now returns an immutable object, use initMutable to create a mutable default instance.