In existing asynchronous distributed systems it is impossible to implement failure detectors which are perfect, i.e. they only suspect crashed processes and eventually suspect all crashed processes. Some recent research has however proposed that any "reasonable" failure detector for solving the election problem must be perfect. We address this problem by introducing two new classes of fail-aware failure detectors that are 1) implementable in existing asynchronous distributed systems, 2) not necessarily perfect, and 3) can be used to solve the election problem. In particular, we show that there exists a fail-aware failure detector that allows to solve the election problem and which is strictly weaker than a Perfect failure detector.