fix some logic flaws