immutable extend