some suggested refactoring; made predicate methods @property; removed isNormal