immutable component