only keep track of struct definitions once