def generate_basic_type_docs(fields, existing_types):
    raml_built_in_types = {
        "any": {
            "parent": None,
        },
        "time-only": {
            "parent": "any",
        },
        "datetime": {
            "parent": "any",
            "pale_children": ["timestamp"],
        },
        "datetime-only": {
            "parent": "any",
        },
        "date-only": {
            "parent": "any",
            "pale_children": ["date"],
        },
        "number": {
            "parent": "any",
        },
        "boolean": {
            "parent": "any",
            "pale_children": ["boolean"]
        },
        "string": {
            "parent": "any",
            "pale_children": ["url", "string", "uri"],
        },
        "null": {
            "parent": "any",
        },
        "file": {
            "parent": "any",
        },
        "array": {
            "parent": "any",
            "pale_children": ["list"],
        },
        "object": {
            "parent": "any",
        },
        "union": {
            "parent": "any",
        },
        "XSD Schema": {
            "parent": "any",
        },
        "JSON Schema": {
            "parent": "any",
        },
        "integer": {
            "parent": "number",
            "pale_children": ["integer"],
        },
    }
    basic_types = {}
    for field in fields:
        if hasattr(field, "value_type"):
            type_name = field.value_type.replace(" ", "_")
            if type_name not in raml_built_in_types \
                and type_name not in basic_types \
                and type_name not in existing_types:
                basic_types[type_name] = {}
                if hasattr(field, "__doc__"):
                    modified_description = clean_description(field.__doc__)
                    basic_types[type_name]["description"] = modified_description
                for raml_type in raml_built_in_types:
                    if "pale_children" in raml_built_in_types[raml_type]:
                        if type_name in raml_built_in_types[raml_type]["pale_children"]:
                            basic_types[type_name]["type"] = raml_type
                            break
                    else:
                        if hasattr(field, "is_list") and field.is_list:
                            basic_types[type_name]["type"] = "array"
                            if hasattr(field, "list_item_type") and field.list_item_type != None:
                                basic_types[type_name]["items"] = field.list_item_type
                            else:
                                basic_types[type_name]["items"] = "base"
                        else:
                            pale_parent_class = field.__mro__[1]
                            if pale_parent_class.__name__ == "object":
                                basic_types[type_name]["type"] = "object"
                            else:
                                basic_types[type_name]["type"] = pale_parent_class.value_type
    ordered_basic_types =  OrderedDict(sorted(basic_types.items(), key=lambda t: t[0]))
    basic_docs = generate_type_docs(ordered_basic_types)
    return (basic_docs, basic_types)