use immutable structures to avoid changes