code: def free(self, *args, **kwargs):
          
          # first set all the keyword argument values
          self.set(**kwargs)
  
          # get everything into one big list
          cnames = list(args) + list(kwargs.keys())
  
          # move each pname to the constants
          for cname in cnames:
  
              if not cname in self._cnames:
                  self._error("Naughty. '"+cname+"' is not a valid constant name.")
  
              else:
                  n = self._cnames.index(cname)
  
                  # make the switcheroo
                  if type(self._pnames)    is not list: self._pnames    = list(self._pnames)
                  if type(self._pguess)    is not list: self._pguess    = list(self._pguess)
                  if type(self._cnames)    is not list: self._cnames    = list(self._cnames)
                  if type(self._constants) is not list: self._constants = list(self._constants)
                  self._pnames.append(self._cnames.pop(n))
                  self._pguess.append(self._constants.pop(n))
  
                  # update
                  self._update_functions()
  
          return self
docs: Turns a constant into a parameter. As arguments, parameters must be strings.
          As keyword arguments, they can be set at the same time.