protected void execute() {
        
        double y = jsdriver.leftY();
        double x = jsdriver.rightX();
        
        System.out.println(drivesubsystem.getSpeed());
        
        if(Math.abs(x) < jsDeadband) x = 0;
        if(Math.abs(y) < jsDeadband) y = 0;
        
        y = interpolationBias*y + (1-interpolationBias)*y*y*y;
        
        double left;
        double right;
        
        if(Math.abs(y) <= jsDeadband){
            left = y + x;
            right = y - x;
        }else{
            left = y + primaryTurnCoefficient*x;
            right = y - primaryTurnCoefficient*x;
        }
        
        //shifting code.
        float avgSpd = getAverageSpeed();
        if (avgSpd > upperShiftLimit && !drivesubsystem.isHighSpeed()){
            drivesubsystem.setHighSpeed();
        } else if (avgSpd < lowerShiftLimit && drivesubsystem.isHighSpeed()){
            drivesubsystem.setLowSpeed();
        }
            
        //System.out.println("[WiredCats] Gyroscope: " + drivesubsystem.getAngle());
        
        drivesubsystem.setLeftRight(left,right);
    }