fixed a bunch of incompatible type warnings by naming struct the same as its typedef name ... (and now I know why the idiom is typedef struct foo { ... } foo;  and not just typedef struct { ... } foo;