main tests pass, swap :else for _