// This is structured as a struct with fields and not as an enum because it helps with the borrow checker.
    // This is structured as a struct with fields and not as an enum because it helps with the borrow checker.