function  wyczyszczonySzkielet=finalFantasy(anotacje,fullAnotacje, sfreq)  
        % aktualnie nieuzywane. Sluzy do czyszczenia ostatecznego zestawu
        % anotacji z odstajacych, uzupelniania dziur itp.
        
        
        
        
        
    histogramBinSize = floor(sfreq/62);  %bin histogramu RRów do oceny jakości kanału o szerokości 15 ms
    topHistBorder = 1.5*sfreq;            % górna granica histogramu = 1.5 s
    bottomHistBorder = sfreq/5;            % dolna granica histogramu = 200 ms

    dispSkelet = diff(anotacje);
    dispSkelet(dispSkelet > topHistBorder) = [];
    dispSkelet(dispSkelet < bottomHistBorder) = [];
    sizeSkelet = size(dispSkelet,1);

    histo = histc(dispSkelet,1:histogramBinSize:topHistBorder);
    [~,skeletHistMaxIndex] =max(histo);
    
    sredniRR = skeletHistMaxIndex*histogramBinSize;
    skeletonLimit = sfreq/3.3;
     %-------------------   
        
    anotacjeNowe = anotacje;
    rry = [sredniRR; diff(anotacjeNowe)];
    anotacjeNowe(rry<sredniRR-skeletonLimit)=[]; %???? czy nie lepiej usuwanie względne?
    %anotacjeNowe(rry>sredniRR+skeletonLimit)=[];
    rry = diff(anotacjeNowe);

       
    aktualnyRR = 2;
    granicaDziury = 1.5 * sredniRR;
    while(1)
        if(aktualnyRR>=size(rry,1))
           break;
        end    
        if( rry(aktualnyRR) > granicaDziury)
            
            if( rry(aktualnyRR-1) > granicaDziury)
                lewyRR = sredniRR;
                lewyRRindex = anotacjeNowe(aktualnyRR)-sredniRR;
            else
                lewyRR = rry(aktualnyRR-1);
                lewyRRindex = anotacjeNowe(aktualnyRR-1);
            end
            
            if(aktualnyRR == size(rry,1))
                prawyRR = sredniRR;
                prawyRRindex = anotacjeNowe(aktualnyRR)+sredniRR;
            elseif( rry(aktualnyRR+1) > granicaDziury)
                prawyRR = sredniRR;
                prawyRRindex = anotacjeNowe(aktualnyRR+1);
            else
                prawyRR = rry(aktualnyRR+1);
                prawyRRindex = anotacjeNowe(aktualnyRR+1);
            end  
            
            iks = anotacjeNowe(aktualnyRR)-lewyRRindex;
            while(iks < rry(aktualnyRR)-sredniRR+skeletonLimit)
                rrDoWstawienia = ((prawyRR-lewyRR)/rry(aktualnyRR))*iks + lewyRR;
                iks = iks +rrDoWstawienia;
                anotacjeNowe = [anotacjeNowe; floor(iks+lewyRRindex)];
            end

        end  
        
            aktualnyRR = aktualnyRR+1;
    end

    anotacjeNowe = sort(anotacjeNowe);
    wyczyszczonySzkielet = anotacjeNowe;     
         
         
         
         
         
         
  

end