* Editor refactored for two step construction: all the methods are set up front in the constructor, and all invocations take place in an init() method which must be called after the constructor. This makes it easy to subclass in a new constructor function by invoking the original constructor with .call and then overriding methods.