protected boolean isFinished() {
        final long timeDiff = System.currentTimeMillis() - startTime;
        //TODO make sure things get finished (time to be on target)

        return (((state != ClawPivotSubsystem.PICKUP && clawPID.onTarget() && timeDiff > 1500) || timeDiff > 4000) && (driveFinishedChecker == null || driveFinishedChecker.bool)) && DriverStation.getInstance().getMatchTime() > timeToFinish;
    }