immutable cgp. completely untested.