Added the soon to be infamous "typedef-struct idiom exception"