   # Warning: This method is currently experimental, and is not used by any core part of the library.
   #   I'd feel much safer with real unit tests in place before proceeding to build around it.
   option: ->
-    # No Arguments: Return a copy of this chart's options
     if arguments.length == 0
-      return Epoch.Util.defaults({}, @options) 
-
-    # Get the option with the given key
-    if arguments.length == 1 and Epoch.isString(arguments[0])
-      parts = arguments[0].split('.')
-      scope = @options
-      while parts.length and scope?
-        subkey = parts.shift()
-        scope = scope[subkey]
-      return scope
-
-    # Set an option with the specified key to a specified value
-    if arguments.length == 2 and Epoch.isString(arguments[0])
-      parts = arguments[0].split('.')
-      scope = @options
-
-      while parts.length
-        subkey = parts.shift()
-        if parts.length == 0
-          scope[subkey] = arguments[1]
-          @trigger "option:#{arguments[0]}"
-          return
-        unless scope[subkey]?
-          scope[subkey] = {}
-        scope = scope[subkey]
-
-    # Set new options given an object
-    if arguments.length == 1 and Epoch.isObject(arguments[0])
-      @options = Epoch.Util.defaults(arguments[0], @options)
-      trigger_options @, arguments[0], ''
-      return
+      @_get_all_options()
+    else if arguments.length == 1 and Epoch.isString(arguments[0])
+      @_get_option arguments[0]
+    else if arguments.length == 2 and Epoch.isString(arguments[0])
+      @_set_option arguments[0], arguments[1]
+    else if arguments.length == 1 and Epoch.isObject(arguments[0])
+      @_set_many_options arguments[0]
 
   # Determines if the chart is currently visible in a document.
   # @return [Boolean] True if the chart is visible, false otherwise.

    else
      @width = defaults.width unless @width?
      @height = defaults.height unless @height?

  # Gets and sets chart options after initialization. When using this as a setter, if an
  # option actually changes value then an event <code>option:NAME</code> will be triggered

    width: 320
    height: 240

  # Creates a new base chart.
  # @param [Object] options Options to set for this chart.
  # @option options [Integer] width Sets an explicit width for the visualization (optional).
