typedef some structs before including other files to avoid circular dependencies in the header files.