docs: function ChernoffFaces(options) {
          var that = this;
  
          // ## Public Properties
  
          // ### ChernoffFaces.options
          // Configuration options
          this.options = null;
  
          // ### ChernoffFaces.table
          // The table containing everything
          this.table = null;
  
          // ### ChernoffFaces.sc
          // The slider controls of the interface
          // Can be set manually via options.controls.
          // @see SliderControls
          this.sc = null;
  
          // ### ChernoffFaces.fp
          // The object generating the Chernoff faces
          // @see FacePainter
          this.fp = null;
  
          // ### ChernoffFaces.canvas
          // The HTMLElement canvas where the faces are created
          this.canvas = null;
  
          // ### ChernoffFaces.changes
          // History all the changes (if options.trackChanges is TRUE).
          // Each time the `draw` method is called, the input parameters
          // and a time measurement will be added here.
          this.changes = [];
  
          // ### ChernoffFaces.onChange
          // Name of the event to emit to update the canvas (falsy disabled)
          this.onChange = null;
  
          // ### ChernoffFaces.onChangeCb
          // Updates the canvas when the onChange event is emitted
          //
          // @param {object} f Optional. The list of features to change.
          //    Can be a complete set or subset of all the features. If
          //    not specified, it will try to get the features from the
          //    the controls object, and if not found, a random vector
          //    will be created.
          // @param {boolean} updateControls Optional. If TRUE, controls
          //    are updated with the new values. Default, FALSE.
          //
          // @see ChernoffFaces.draw
          this.onChangeCb = function(f, updateControls) {
              if ('undefined' === typeof updateControls) updateControls = false;
              if (!f) {
                  if (that.sc) f = that.sc.getValues();
                  else f = FaceVector.random();
              }
              that.draw(f, updateControls);
          };
  
          /**
           * ### ChoiceTable.timeFrom
           *
           * Name of the event to measure time from for each change
           *
           * Default event is a new step is loaded (user can interact with
           * the screen). Set it to FALSE, to have absolute time.
           *
           * @see node.timer.getTimeSince
           */
          this.timeFrom = 'step';
  
          // ### ChernoffFaces.features
          // The object containing all the features to draw Chernoff faces
          this.features = null;
      }