code: def input_fields(self, preamble, *args):
          
  
          self.new_section()
          if preamble is not None:
              self.message(preamble)
  
          if any([True for x in args if len(x) > 3]):
              self.message("""
                  Some questions have default answers which can be selected by
                  pressing 'Enter' at the prompt.""")
  
          output_dict = { }
          for field in args:
              (field_name, prompt, field_type) = field[:3]
  
              default = None
              if len(field) > 3:
                  default = field[3]
  
              if field_type == 'string':
                  output_dict[field_name] = self.input(prompt, default = default)
              elif field_type == 'password':
                  output_dict[field_name] = self.input(prompt, no_echo=True)
              elif field_type == 'boolean':
                  output_dict[field_name] = self.input_boolean(prompt, default = default)
              elif field_type == 'integer':
                  output_dict[field_name] = self.input_integer(prompt, default = default)
  
          return output_dict
docs: Get a set of fields from the user. Optionally a preamble may be
          shown to the user secribing the fields to return. The fields are
          specified as the remaining arguments with each field being a a
          list with the following entries:
  
              - a programmer-visible name for the field
              - a string prompt to show to the user
              - one of the following values:
                  - string: return a string from the user
                  - password: return a string from the user but do not echo the
                    input to the screen
                  - boolean: return a boolean value from the user
                  - integer: return an integer value from the user
              - the default value (optional)
  
          Fields are requested from the user in the order specified.
  
          Fields are returned in a dictionary with the field names being the keys
          and the values being the items.