use six
Implement state save/restore for custom viewers
Call settings_changed at custom viewer creation time
Update Custom Viewer interface

Named argument introspection, subclass form, state special variable