A method of handling the communication of information between an entity and multiple devices (201, 251) through respective device drivers, the method comprising: allocating each of a plurality of ring buffers (202,252) to a respective device (201,251) of a plurality of devices; writing information, for synchronized playback on each of the plurality of devices (201,251), into each of the plurality of ring buffers (202,252); upon reaching the end of any ring buffer while writing the information to the ring buffer, performing a wrap-around operation to continue writing the information beginning at the start of the ring buffer; upon reaching the end of any ring buffer while reading the information from the ring buffer, the corresponding device performing a wrap-around operation to continue reading the information beginning at the start of the ring buffer; each device currently reading information from a current position in the ring buffer allocated to said device; storing timestamp information when each device performs a wrap-around operation while reading information from the ring buffer allocated to said device; selecting one of said plurality of devices (201,251) as a master device based, at least in part, on latency information received from said plurality of devices (201,251); and determining a timing difference between the device clock of said master device and the device clock of any one of said plurality of devices (201,251); resampling the information to be written to any ring buffer of said plurality of ring buffers (202,252) based on said timing difference, characterised in that: resampling the information to be written to a ring buffer comprises increasing the rate at which the information is written to said ring buffer when the device clock of the device to which the ring buffer is allocated is faster than the device clock of the master device, and comprises decreasing the rate at which the information is written to said ring buffer when the device clock of the device to which the ring buffer is allocated is slower than the device clock of the master device. allocating each of a plurality of ring buffers (202,252) to a respective device (201,251) of a plurality of devices; writing information, for synchronized playback on each of the plurality of devices (201,251), into each of the plurality of ring buffers (202,252); upon reaching the end of any ring buffer while writing the information to the ring buffer, performing a wrap-around operation to continue writing the information beginning at the start of the ring buffer; upon reaching the end of any ring buffer while reading the information from the ring buffer, the corresponding device performing a wrap-around operation to continue reading the information beginning at the start of the ring buffer; each device currently reading information from a current position in the ring buffer allocated to said device; storing timestamp information when each device performs a wrap-around operation while reading information from the ring buffer allocated to said device; selecting one of said plurality of devices (201,251) as a master device based, at least in part, on latency information received from said plurality of devices (201,251); and determining a timing difference between the device clock of said master device and the device clock of any one of said plurality of devices (201,251); resampling the information to be written to any ring buffer of said plurality of ring buffers (202,252) based on said timing difference, characterised in that: resampling the information to be written to a ring buffer comprises increasing the rate at which the information is written to said ring buffer when the device clock of the device to which the ring buffer is allocated is faster than the device clock of the master device, and comprises decreasing the rate at which the information is written to said ring buffer when the device clock of the device to which the ring buffer is allocated is slower than the device clock of the master device.