struct Type structinst bits but type is already typeinst? for each var, create list of constraints on type then just need to iterate through constraints to determine type keep doing passes for vars that depend on the type of other vars really need to make subvar for each field of struct var so 2 different "a.b" refer to same thing makes borrow checking easier do dependency cycles exist? for global vars yes, in functions no but if function returns are inferrable (even if just "impl Trait"), then needed in functions? every kind has an origin, should make separate like names? TYPE IDS!!!!! MY SAVIOR!!! MY GOAT!!!