def _process_args args, config, block_event, events  #:nodoc:
      raise "FIXME seems uncalled _process_args, remove it this does not come up within a month 2014-08-19 "
      args.each do |arg| 
        case arg
        when Array
          # please don't use this, keep it simple and use hash NOTE
          # we can use r,c, w, h
          row, col, width, height = arg
          config[:row] = row
          config[:col] = col
          config[:width] = width if width
          # width for most XXX ?
          config[:height] = height if height
        when Hash
          config.merge!(arg)
          if block_event 
            block_event = config.delete(:block_event){ block_event }
            raise "Invalid event. Use #{events}" unless events.include? block_event
          end
        when String
          config[:name] = arg
          config[:title] = arg # some may not have title
          #config[:text] = arg # some may not have title
        end
      end
    end
def _process_args args, config, block_event, events  #:nodoc:
      raise "FIXME seems uncalled _process_args, remove it this does not come up within a month 2014-08-19 "
      args.each do |arg| 
        case arg
        when Array
          # please don't use this, keep it simple and use hash NOTE
          # we can use r,c, w, h
          row, col, width, height = arg
          config[:row] = row
          config[:col] = col
          config[:width] = width if width
          # width for most XXX ?
          config[:height] = height if height
        when Hash
          config.merge!(arg)
          if block_event 
            block_event = config.delete(:block_event){ block_event }
            raise "Invalid event. Use #{events}" unless events.include? block_event
          end
        when String
          config[:name] = arg
          config[:title] = arg # some may not have title
          #config[:text] = arg # some may not have title
        end
      end
    end
process args, all widgets should call this