so much bug-fix! still don't know with any kind of proof that the typechecker does what it says on the tin