pushing a bunch of updates to the way types are defined and used