better subclassing support
Add "dictionary of promises" support