add good-enough? and could-not-do-better? for ab.clj