public boolean match() {
    for (Iterator<Hit> iter = hits.iterator(); iter.hasNext(); ) {
      Hit h = iter.next();
      if (robot.getTime() - h.time > 20) {
        iter.remove();
      }
    }
    double avgBearing = 0;
    for (Hit h : hits) {
      avgBearing += h.heading;
    }
    avgBearing /= hits.size();

    // todo (zhidkov): fix name
    double maxHz = 0;
    for (Hit h : hits) {
      if (abs(h.heading - avgBearing) > maxHz) {
        maxHz = abs(h.heading - avgBearing);
      }
    }
    return abs(avgBearing - maxHz) < LXXConstants.RADIANS_45 && hits.size() > 1;
  }