text: /**
   * @namespace fabric.Image.filters
   * @memberOf fabric.Image
   * @tutorial {@link http://fabricjs.com/fabric-intro-part-2/#image_filters}
   * @see {@link http://fabricjs.com/image-filters/|ImageFilters demo}
   */
  fabric.Image.filters = fabric.Image.filters || { };
  
  /**
   * Root filter class from which all filter classes inherit from
   * @class fabric.Image.filters.BaseFilter
   * @memberOf fabric.Image.filters
   */
  fabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Image.filters.BaseFilter.prototype */ {
  
    /**
     * Filter type
     * @param {String} type
     * @default
     */
    type: 'BaseFilter',
  
    /**
     * Constructor
     * @param {Object} [options] Options object
     */
    initialize: function(options) {
      if (options) {
        this.setOptions(options);
      }
    },
  
    /**
     * Sets filter's properties from options
     * @param {Object} [options] Options object
     */
    setOptions: function(options) {
      for (var prop in options) {
        this[prop] = options[prop];
      }
    },
  
    /**
     * Returns object representation of an instance
     * @return {Object} Object representation of an instance
     */
    toObject: function() {
      return { type: this.type };
    },
  
    /**
     * Returns a JSON representation of an instance
     * @return {Object} JSON
     */
    toJSON: function() {
      // delegate, not alias
      return this.toObject();
    }
  });
  