- type-safe replace