async def METHOD_NAME(
    cls,
    port: str,
    usb_port: USBPort,
    execution_manager: ExecutionManager,
    hw_control_loop: asyncio.AbstractEventLoop,
    poll_interval_seconds: Optional[float] = None,
    simulating: bool = False,
    sim_model: Optional[str] = None,
) -> "MagDeck":
    """Factory function."""
    driver: AbstractMagDeckDriver
    if not simulating:
        driver = await MagDeckDriver.create(port=port, loop=hw_control_loop)
    else:
        driver = SimulatingDriver(sim_model=sim_model)
    mod = cls(
        port=port,
        usb_port=usb_port,
        execution_manager=execution_manager,
        hw_control_loop=hw_control_loop,
        device_info=await driver.get_device_info(),
        driver=driver,
    )
    return mod