removed negative condition checking, very little gained for so much additional complexity