Such type saftey
Actually use the basic block ordering
Change names