patch changes state rather than returning a copy - N.B. this should probably be configurable
0.1.0