**Problem** The current approach mutates the prototypes, and this can lead to problems related with overrides. **Proposed solution** Implement a delegation approach where extensions can be in a delegate object that interacts with the original object.