untested and uncorrected merge from immutable1