digraph Drivers {
    InitSystem -> VFS;
    InitSystem -> Logger;
    
    TCP -> NetworkingStack;
    UDP -> NetworkingStack;
    
    NetworkingStack -> PhysLayer;
    PhysLayer -> Ethernet;

    Ethernet -> Threec90x;
    Ethernet -> Intel8254x;
    Ethernet -> Ne2000;
    Ethernet -> RTL8139;
    Ethernet -> RTL8169;
    Ethernet -> IntelEtherneti217;
    Ethernet -> AMDPCnet;
    
    PhysLayer -> Wifi;
    Wifi -> Eight02Dot11; 
    
    
    
    
    Audio -> PCSpeaker;
    Audio -> SoundBlaster16;
    
    RNG -> CpuRNG;
    RNG -> NetworkingStack;
    RNG -> GraphicsLibrary;
    RNG -> Input;
    
    Slint -> GraphicsLibrary;
    GraphicsLibrary -> ShaderCompiler;
    ShaderCompiler -> GraphicsDriver;
    GraphicsLibrary -> GraphicsDriver;
    // Todo: dreak out the GPU into specific drivers
    GraphicsDriver -> GPU;
    
    Logger -> Serial;
    Logger -> VFS;
    
    Input -> Keyboard;
    Input -> GraphicsTablet;
    Input -> Mouse;
    Input -> Serial; 
    Input -> Controllers;
    
    Controllers -> Playstation;
    Playstation -> DualShock;
    Playstation -> DualSense;
    DualShock -> DualShock1;
    DualShock -> DualShock2;
    DualShock -> DualShock3;
    DualShock -> DualShock4;

    
    Mouse -> PS2Mouse;
    Mouse -> USBMouse;
    USBMouse -> GenericUSBMouse;
    Mouse -> MouseTrackPad;
    Mouse -> MouseTrackPoint;
    
    VFS -> Fat32;
    VFS -> TarFS;
    VFS -> Ext2;
    
    Ext2 -> VirtualDisk;
    TarFS -> VirtualDisk;
    Fat32 -> VirtualDisk;
    
    VirtualDisk -> IDEDiskDriver;
    VirtualDisk -> ATADiskDriver;
    VirtualDisk -> FloppyController;
    VirtualDisk -> CDROM;
    VirtualDisk -> NVME;

    BlueToothStack;
}