flowchart TD
    A["Start"] --> B{"types of source"}
    B -- File --> C{"formats"}
    B -- Server --> D{"types"}
    B -- NetworkX --> M["NetworkXFreighter"]
    C -- CSV --> E{"num of files"}
    C -- Avro --> F["AvroFreighter"]
    C -- Parquet --> G["ParquetFreighter"]
    E -- Single --> H{"file size"}
    E -- Multiple --> I{"file size"}
    H -- Small --> N["CSVFreighter"]
    H -- Large --> O["AzureStorageFreighter"]
    I -- Small --> P["MultiCSVFreighter"]
    I -- Large --> Q["MultiAzureStorageFreighter"]
    D -- Neo4j --> J["Neo4jFreighter"]
    D -- "Cosmos<br>Gremlin" --> K["CosmosGremlinFreighter"]
    D -- "Cosmos<br>NoSQL" --> R["CosmosNoSQLFreighter"]
    D -- PGSQL --> L["PGFreighter"]
