added a weird typedef / struct thing, to hide the content of the struct
holding device driver data