old_contents: /**
   * dat-gui JavaScript Controller Library
   * http://code.google.com/p/dat-gui
   *
   * Copyright 2011 Data Arts Team, Google Creative Lab
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   * http://www.apache.org/licenses/LICENSE-2.0
   */
  
  define([
    'dat/controllers/OptionController',
    'dat/controllers/NumberControllerBox',
    'dat/controllers/NumberControllerSlider',
    'dat/controllers/StringController',
    'dat/controllers/FunctionController',
    'dat/controllers/BooleanController',
    'dat/utils/common'
  ],
      function(OptionController, NumberControllerBox, NumberControllerSlider, StringController, FunctionController, BooleanController, common) {
  
        return function(object, property) {
  
          var initialValue = object[property];
  
          // Providing options?
          if (common.isArray(arguments[2]) || common.isObject(arguments[2])) {
            return new OptionController(object, property, arguments[2]);
          }
  
          // Providing a map?
  
          if (common.isNumber(initialValue)) {
  
            if (common.isNumber(arguments[2]) && common.isNumber(arguments[3])) {
  
              // Has min and max.
              return new NumberControllerSlider(object, property, arguments[2], arguments[3]);
  
            } else {
  
              return new NumberControllerBox(object, property, { min: arguments[2], max: arguments[3] });
  
            }
  
          }
  
          if (common.isString(initialValue)) {
            return new StringController(object, property);
          }
  
          if (common.isFunction(initialValue)) {
            return new FunctionController(object, property, '');
          }
  
          if (common.isBoolean(initialValue)) {
            return new BooleanController(object, property);
          }
  
        }
  
      });
new_contents: /**
   * dat-gui JavaScript Controller Library
   * http://code.google.com/p/dat-gui
   *
   * Copyright 2011 Data Arts Team, Google Creative Lab
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   * http://www.apache.org/licenses/LICENSE-2.0
   */
  
  define([
    'dat/controllers/OptionController',
    'dat/controllers/NumberControllerBox',
    'dat/controllers/NumberControllerSlider',
    'dat/controllers/StringController',
    'dat/controllers/FunctionController',
    'dat/controllers/BooleanController',
    'dat/utils/common'
  ],
      function(OptionController, NumberControllerBox, NumberControllerSlider, StringController, FunctionController, BooleanController, common) {
  
        return function(object, property) {
  
          var initialValue = object[property];
  
          // Providing options?
          if (common.isArray(arguments[2]) || common.isObject(arguments[2])) {
            return new OptionController(object, property, arguments[2]);
          }
  
          // Providing a map?
  
          if (common.isNumber(initialValue)) {
  
            if (common.isNumber(arguments[2]) && common.isNumber(arguments[3])) {
  
              // Has min and max.
              if (common.isNumber(arguments[4])) // has step
                  return new NumberControllerSlider(object, property, arguments[2], arguments[3], arguments[4]);
              else
                  return new NumberControllerSlider(object, property, arguments[2], arguments[3]);
  
            } else {
  
              return new NumberControllerBox(object, property, { min: arguments[2], max: arguments[3] });
  
            }
  
          }
  
          if (common.isString(initialValue)) {
            return new StringController(object, property);
          }
  
          if (common.isFunction(initialValue)) {
            return new FunctionController(object, property, '');
          }
  
          if (common.isBoolean(initialValue)) {
            return new BooleanController(object, property);
          }
  
        }
  
      });
  
subject: Update factory.js