a bunch of new type safety changes. Mostly around making objects get initialized nicely