void collectPuckData(AIPuck puck, AIHockeyist puckOwner) {
        if (puckOwner == null) {
            if (locations.size() < 2) {
                locations.add(new AIPoint(puck.getLocation()));
                speed.add(puck.getSpeedScalar());
            } else {
                // lets see where the point is and etc
                if (!AI.isBetween(
                        locations.get(0),
                        puck.getLocation(),
                        locations.get(locations.size() / 2)) ||
                    AI.angle(
                        puck.getSpeed(),
                        AIPoint.difference(
                                puck.getLocation(),
                                locations.get(0))) > 0.01) {
                    if (locations.size() > 2) {
                        writeResults();
                    }
                    reset();
                } else {
                    addState(puck);
                }
            }
        } else if (!locations.isEmpty()) {
            if (locations.size() > 2) {
                // write chain to file
                writeResults();
            }
            reset();
        }
    }