You can still override a property and break the `sync=True` mechanism if you really want to.

I test our existing design in a notebook:

In [1]:
```python
from IPython.utils.traitlets import List
from IPython.config import LoggingConfigurable

class A(LoggingConfigurable):
    keys = List()
    def _keys_default(self):
        return [name for name in self.traits(sync=True)]
class B(A):
    sync_me_1 = List(sync=True)
    def __init__(self, *pargs, **kwargs):
        A.__init__(self, *pargs, **kwargs)
        self.keys = self.keys + ['insert1']
class C(B):
    sync_me_2 = List(sync=True)
```

In [2]:
```python
c = C()
c.keys
```

Out[2]:
['sync_me_2', 'sync_me_1', 'insert1']