a ton of cleanup, and dealing with stupid conditional fails due to AND|OR priority