def add_variables(*vars)
      # create bound variables for each variable
      bound_vars = vars.collect do |v|
        BoundVariable.new v, self
      end

      # add all the bound variables to the variables hash
      keys = vars.collect(&:name)
      append_hash = Hash[ keys.zip(bound_vars) ]
      @variables_hash.merge!(append_hash) do |key, oldval, newval|
        oldval # the first bound variable
      end
    end
def add_variables(*vars)
      # create bound variables for each variable
      bound_vars = vars.collect do |v|
        BoundVariable.new v, self
      end

      # add all the bound variables to the variables hash
      keys = vars.collect(&:name)
      append_hash = Hash[ keys.zip(bound_vars) ]
      @variables_hash.merge!(append_hash) do |key, oldval, newval|
        oldval # the first bound variable
      end
    end
add variables. doesn't check for uniqueness, does not overwrite existing