seems like id is not part of the model, but more like way to construct the hierarchy.
what about keeping it separate ```menuProvider.menu(id, menu)```
you could also think about some interface for subitems instead of this parentId value, eg.
```
menuProvider.menu('settings', {label: 'Settings', href: '/settings'});
menuProvider.menu('settings').menu('ingest', {label: 'Ingest', href: '/ingest'});
```
so that it would be getter without value and setter with value..