- generic: abstract base class for collaborative document editors, with history, attribution of who made changes, undo, etc., for building collaborative editors

- string: editor where the underlying document being edited is a string

- db: editor where underlying document is a relatively small in memory database
