Allow stack subclassing
Tidier behaviour around dictionary updates