def <<(*args, &block)
      if args[0].kind_of?(Scruffy::Layers::Base)
        layers << args[0]
      else
        type = args.first.is_a?(Symbol) ? args.shift : @default_type
        title = args.shift if args.first.is_a?(String)
        
        # Layer handles PointContainer mixin, don't do it here
        points = [Array, Hash].include?(args.first.class) ? args.shift : []
        options = args.first.is_a?(Hash) ? args.shift : {}
        
        title ||= ''
        
        raise ArgumentError, 
                'You must specify a graph type (:area, :bar, :line, etc) if you do not have a default type specified.' if type.nil?
              
        class_name = "Scruffy::Layers::#{to_camelcase(type.to_s)}"
        layer_class = Kernel::module_eval(class_name)
        options = {:points => points, :title => title}.merge options
        layer = layer_class.new(options, &block)
        layers << layer
      end
      layer
    end
def <<(*args, &block)
      if args[0].kind_of?(Scruffy::Layers::Base)
        layers << args[0]
      else
        type = args.first.is_a?(Symbol) ? args.shift : @default_type
        title = args.shift if args.first.is_a?(String)
        
        # Layer handles PointContainer mixin, don't do it here
        points = [Array, Hash].include?(args.first.class) ? args.shift : []
        options = args.first.is_a?(Hash) ? args.shift : {}
        
        title ||= ''
        
        raise ArgumentError, 
                'You must specify a graph type (:area, :bar, :line, etc) if you do not have a default type specified.' if type.nil?
              
        class_name = "Scruffy::Layers::#{to_camelcase(type.to_s)}"
        layer_class = Kernel::module_eval(class_name)
        options = {:points => points, :title => title}.merge options
        layer = layer_class.new(options, &block)
        layers << layer
      end
      layer
    end
Adds a Layer to the Graph/Container.  Accepts either a list of
 arguments used to build a new layer, or a Scruffy::Layers::Base-derived
 object.  When passing a list of arguments, all arguments are optional,
 but the arguments specified must be provided in a particular order:
 type (Symbol), title (String), points (Array), options (Hash).

 Both #add and #<< can be used.

   graph.add(:line, [100, 200, 150])     # Create and add an untitled line graph

   graph << (:line, "John's Sales", [150, 100])    # Create and add a titled line graph

   graph << Scruffy::Layers::Bar.new({...})   # Adds Bar layer to graph