Index: Damkjer/PointProcessing/Thinning_Damkjer/thin_Damkjer.m
===================================================================
--- Damkjer/PointProcessing/Thinning_Damkjer/thin_Damkjer.m	(revision 14)
+++ Damkjer/PointProcessing/Thinning_Damkjer/thin_Damkjer.m	(revision 15)
@@ -53,5 +53,5 @@
 % thin_Dyn
 %******************************************************************************
-function [ results ] = thin_Damkjer( points, threshold, varargin )
+function [ results, removed_wgts, impact ] = thin_Damkjer( points, threshold, varargin )
    % Perform local feature attribution via eigenspace analysis.
    %
@@ -85,4 +85,7 @@
    disp(['...done in ' num2str(toc(tstart)) 's']);
 
+%    size(check)
+%    size(points)
+%    
    if (any(size(check) ~= size(points)))
       error('Points must be unique. Try: unique(X.'',''rows'',''stable'').''');
@@ -194,10 +197,5 @@
 
    natives = nbrspanalyze(points, nbrs, test, 'timebar');
-%   natives = nbrspanalyze(points, nbrs, 'timebar');
-
-%    if (any(isnan(natives.entropy)))
-%       disp('Ugh... seriously?');
-%    end
-%    
+
    disp(['...done in ' num2str(toc(tstart)) 's']);
 
@@ -210,8 +208,4 @@
    feats = nbrspanalyze(points, nbrs, 'timebar');
 
-%    if (any(isnan(feats.entropy)))
-%       disp('Ugh... seriously?');
-%    end
-%    
    disp(['...done in ' num2str(toc(tstart)) 's']);
    
@@ -244,23 +238,6 @@
       close(h);
    end
-
-%    if (any(isnan(sigs)))
-%       disp('Ugh... seriously?');
-%    end
-%
+   
    disp(['...done in ' num2str(toc(tstart)) 's']);
-
-%    origFormat = get(0, 'format');
-%    format('longG');
-%    min(sigs)
-%    max(sigs)
-%    set(0, 'format', origFormat);
-
-%    results = natives;
-% end
-%   
-% function cont
-%    error('Stop');
-   
 
    %***
@@ -289,5 +266,5 @@
 
    removed=zeros(1,elements-threshold);
-   dual_size=zeros(1,elements-threshold);
+%   dual_size=zeros(1,elements-threshold);
    current=1;
 
@@ -308,6 +285,10 @@
       n = length(sigs) - tau;
       removed_wgts=zeros(1,n);
-
-%      msg=['Thin Dimension ' num2str(dim) '(' num2str(length(parts{dim})) ...
+      baseline=natives.entropy;
+
+      impact=zeros(1,n+1);
+      impact(1) = mean(natives.entropy);
+      
+%      msg=['Thin Dimension ' num2str(dim) '(' num2str(length(parts{dim}))  ...
 %                                          '->' num2str(tau) ')...'];
       msg='Thin...';
@@ -318,50 +299,21 @@
       tic;
 
-%       disp(nbrs{318935})
-%       disp(test{318935})
-%       disp(duals{318935})
-% 
-%       disp(nbrs{458702})
-%       disp(test{458702})
-%       disp(duals{458702})
-
+      max_sig=0;
+      
       for x=1:n
          
-%         disp('Pop');
-         
-%         heap_size = heap.size();
-
          % Locate the least significant point to remove
          [wgt, idx]=heap.pop_head();
-
-%         disp('Popped');
-         
-%         if (heap.size() ~= (heap_size - 1))
-%            disp(['...and there it is: ' num2str(heap_size) ' - 1 vs. ' num2str(heap.size())]);
-%            disp(idx);
-%            error('oops');
-%         end
-         
-%         if (isempty(nbrs{idx}) || isempty(duals{idx}))
-%            disp(idx);
-%         end
-
-%         if (isempty(nbrs{idx}) && isempty(duals{idx}))
-%            disp('uh oh');
-%            disp(idx);
-%         end
-%         idx
-%         wgt
-
-%          if (any(removed==idx))
-%             disp('uh oh');
-%             disp(['Index already removed ' num2str(idx)]);
-%          end
 
          % Mark the point as removed
          removed(current)=idx;
 %         removed_wgts{dim}(x)=wgt;
-         removed_wgts(x)=wgt;
-
+         max_sig=max(max_sig, wgt);
+%         removed_wgts(x)=wgt;
+         removed_wgts(x)=max_sig;
+
+         impact(1 + x) = ((elements - x + 1) * impact(x) - natives.entropy(idx)) / ...
+                         (elements - x);
+%          impact(1 + x)
 
          % Distribute the points in the test set to the neighbor's test sets.
@@ -369,39 +321,16 @@
          samples   = test{idx};
          
-%         neighbors
-%         samples
-         
          for samp=1:length(samples)
             % Find the closest
-%            [dsq,new_idx]=min(sum((bsxfun(@minus, points(:,neighbors), ...
+%            [dsq,new_idx]=min(sum((bsxfun(@minus, points(:,neighbors),     ...
 %                                          points(:,samples(samp)))).^2, 1));
 
-            [dsq,new_idx]=min(sum((bsxfun(@minus, points(1:3,neighbors), ...
+            [dsq,new_idx]=min(sum((bsxfun(@minus, points(1:3,neighbors),    ...
                                           points(1:3,samples(samp)))).^2, 1));
-
-%             samples(samp)
-%             points(1:3,neighbors)
-%             points(1:3,samples(samp))
-%             dsq
-%             new_idx
-%             neighbors(new_idx)
 
             % Update the test set
             test{neighbors(new_idx)}(end + 1,1) = samples(samp);
 
-%             if (samples(samp) == 458702)
-%                disp(['relocating 458702 from test{' num2str(idx) '} to test{'...
-%                      num2str(neighbors(new_idx)) '}']);
-%                
-%                disp(test{neighbors(new_idx)});
-%             end
-% 
-%             if (neighbors(new_idx) == 458702)
-%                disp(['relocating ' num2str(samples(samp)) ' from test{' num2str(idx) '} to test{458702}']);
-%                
-%                disp(test{neighbors(new_idx)});
-%             end
-
-%            tdist(neighbors(new_idx)) = max(tdist(neighbors(new_idx)),...
+%            tdist(neighbors(new_idx)) = max(tdist(neighbors(new_idx)),     ...
 %                                            sqrt(dsq));
          end
@@ -410,19 +339,10 @@
          % contains the neighbors. Update the neighbor duals appropriately.
          for nbr=1:length(neighbors)
-%             if (neighbors(nbr) == 458702)
-%                disp([num2str(idx) '''s neighborhood no longer contains 458702']);
-%                disp(duals{neighbors(nbr)});
-%             end
-            
             duals{neighbors(nbr)}=duals{neighbors(nbr)}(duals{neighbors(nbr)}~=idx);
-
-%             if (neighbors(nbr) == 458702)
-%                disp(duals{neighbors(nbr)});
-%             end
          end
 
          % Find neighborhoods that contain removed element
          neighborhoods=duals{idx};
-         dual_size(current)=length(neighborhoods);
+%         dual_size(current)=length(neighborhoods);
          neighborhoods=sort(neighborhoods(neighborhoods~=idx), 'ascend');
 
@@ -436,6 +356,4 @@
 
             % Build up the list of potential new neighbors
-%            disp('building candidates...');
-
             nbr_pool=fastsetunion({nbrs{nbrs{neighborhoods(hood)}}});
             non_nbrs=fastsetunion({nbrs{neighborhoods(hood)},idx,neighborhoods(hood)});
@@ -451,45 +369,10 @@
             end
 
-            % Find the closest
-%            disp('finding closest...');
-
-%% Obsolete code
-%            % Don't use VP Tree for single nearest neighbor... overhead not
-%            % worth it.
-%            locdb = VpTree(points(:,nbr_pool));
-%            nn=locdb.knn(points(:,idx),1);
-%            new_idx=nn{1}
-%%
-%             points(1:3,nbr_pool)
-%             points(1:3,neighborhoods(hood))
-%             
-            [dsq,new_idx]=min(sum((bsxfun(@minus, points(1:3,nbr_pool), ...
+            [dsq,new_idx]=min(sum((bsxfun(@minus, points(1:3,nbr_pool),     ...
                                           points(1:3,neighborhoods(hood)))).^2, 1));
 
-%             points(1:3,nbr_pool)
-%             points(1:3,neighborhoods(hood))
-%             bsxfun(@minus, points(1:3,nbr_pool), points(1:3,neighborhoods(hood)))
-%             (bsxfun(@minus, points(1:3,nbr_pool), points(1:3,neighborhoods(hood)))).^2
-%             sum((bsxfun(@minus, points(1:3,nbr_pool), points(1:3,neighborhoods(hood)))).^2,1)
-%             [dsq,new_idx]=min(sum((bsxfun(@minus, points(1:3,nbr_pool), points(1:3,neighborhoods(hood)))).^2,1))
-
             % Update the neighborhood
-%            disp('updating neighborhood...'); 
-
             new_dist = sqrt(dsq);
 
-%             if (neighborhoods(hood) == 458702)
-%                disp(['replace ' num2str(idx) ' in 458702''s neighborhood']);
-%                disp('Pool...');
-%                disp(nbr_pool(new_idx));
-%                disp('Before...');
-%                disp(nbrs{neighborhoods(hood)});
-%             end
-%             
-%             if (nbr_pool(new_idx) == 458702)
-%                disp(['458702 is replacing ' idx ' in ' neighborhoods(hood) '''s neighborhood']);
-%                disp(nbrs{neighborhoods(hood)});               
-%             end
-%             
             % Maintain a partially sorted list of indices by max distance.
             if (new_dist > dists{neighborhoods(hood)}(end))
@@ -514,31 +397,7 @@
                disp(neighborhoods(hood));
             end
-%            nbrs{neighborhoods(hood)}
-%            dists{neighborhoods(hood)}
             
             % Update the dual
-%            disp('updating dual...');
-
-
-%            duals{nbr_pool(new_idx)}
             duals{nbr_pool(new_idx)}(end + 1,1) = neighborhoods(hood);
-%            duals{nbr_pool(new_idx)}
-%             disp(nbrs{neighborhoods(hood)});
-%             disp(duals{nbr_pool(new_idx)});
-
-%             error('stop');
-%             if (neighborhoods(hood) == 458702)
-%                disp('After...');
-%                disp(nbrs{neighborhoods(hood)});
-%                disp([num2str(nbr_pool(new_idx)) ' is now in 458702''s neighborhood']);
-%                disp(duals{nbr_pool(new_idx)});
-%             end
-% 
-%             if (nbr_pool(new_idx) == 458702)
-%                disp(nbrs{neighborhoods(hood)});               
-%                disp(['458702 is now in ' num2str(nbr_pool(new_idx)) '''s neighborhood']);
-%                disp(duals{nbr_pool(new_idx)});
-%             end
-
          end
          
@@ -548,35 +407,13 @@
          
          % Update analysis for elements
-%         disp('updating analysis...');
-
-%          if (isempty(neighborhoods))
-%             warning('Damkjer:strange','empty neighborhoods');
-%          end
-%          
-%          if (isempty(neighbors))
-%             warning('Damkjer:stranger','empty neighbors');
-%          end
-%          
          if (isempty(neighborhoods))
             neighborhoods=neighbors;
          end
          
-%         if (~isempty(neighborhoods) && ~isempty(neighbors))
          neighborhoods=fastsetunion({neighborhoods, neighbors});
-%         elseif (isempty(neighborhoods) && ~isempty(neighbors))
-%            neighborhoods=neighbors;
-%         end
-         
-%         nbrs{neighborhoods}
-%         test{neighborhoods}
-         
-%         error('Stop');
 
          if (~isempty(neighborhoods))
             locfeats = nbrspanalyze(points,                                 ...
                                     nbrs(neighborhoods));
-%            locfeats = nbrspanalyze(points,                                 ...
-%                                    nbrs(neighborhoods),                    ...
-%                                    test(neighborhoods));
 
             locsigs=zeros(1,length(neighborhoods));
@@ -592,25 +429,4 @@
             sig_upd=locsigs;
 
-%             for pt=1:length(updates)
-%             if (any(removed==updates(pt)))
-%                disp('uh oh');
-%                disp(['Index already removed ' num2str(updates(pt))]);
-%             end
-%             end
-
-            
-%             heap_size = heap.size();
-%             
-%             heap.erase(sigs(updates),updates);
-%             
-%             if (heap.size() ~= (heap_size - length(updates)))
-%                disp(['...and there it is: ' num2str(heap_size) ' - ' num2str(length(updates)) ' vs. ' num2str(heap.size())]);
-%                disp(sigs(updates));
-%                disp(updates);
-%                error('oops');
-%             end
-%             
-%             heap.insert(sig_upd,updates);
-
             heap.update(sig_upd,updates);
             sigs(neighborhoods)=locsigs;
@@ -631,5 +447,5 @@
       end
       
-      disp(['...done in ' num2str(toc(tstart)) 's']);   
+      disp(['...done in ' num2str(toc(tstart)) 's']);
 %   end
 
@@ -647,6 +463,6 @@
 
    figure, plot(1:x_max,y);
-   figure, plot(1:length(dual_size),dual_size);
-
+   figure, plot(1:length(impact),impact);
+   
 %   results = points(:,~ismember(1:size(points,2),removed));
    results = removed;
@@ -675,6 +491,6 @@
    
    if isempty(varargin)
-      error('Damkjer:InvalidOptions', ...
-            ['A neighborhood size must be specified, either directly or '...
+      error('Damkjer:InvalidOptions',                                       ...
+            ['A neighborhood size must be specified, either directly or '   ...
              'via optional parameters.']);
    end
@@ -683,11 +499,11 @@
       value = varargin{1};
       
-      if (isscalar(value)  && ...
-          isreal(value)    && ...
+      if (isscalar(value)  &&                                               ...
+          isreal(value)    &&                                               ...
           value >= 5)
          userParams.neighbors = fix(value);
       else
-         error('Damkjer:InvalidCount', ...
-               ['Number of Neighbors must be a real valued positive '...
+         error('Damkjer:InvalidCount',                                      ...
+               ['Number of Neighbors must be a real valued positive '       ...
                 'integer greater or equal to 5: ' num2str(value)]);
       end
@@ -698,6 +514,6 @@
    % Parse the Property/Value pairs
    if rem(length(varargin), 2) ~= 0
-      error('Damkjer:PropertyValueNotPair', ...
-            ['Additional arguments must take the form of Property/Value '...
+      error('Damkjer:PropertyValueNotPair',                                 ...
+            ['Additional arguments must take the form of Property/Value '   ...
              'pairs']);
    end
@@ -715,5 +531,5 @@
          error('Damkjer:InvalidProperty', 'Invalid Property');
       elseif length(iProperty) > 1
-         error('Damkjer:AmbiguousProperty', ...
+         error('Damkjer:AmbiguousProperty',                                 ...
                'Supplied shortened property name is ambiguous');
       end
@@ -723,43 +539,43 @@
       switch property
       case 'neighbors'
-         if (isscalar(value)  && ...
-             isreal(value)    && ...
+         if (isscalar(value)  &&                                            ...
+             isreal(value)    &&                                            ...
              value >= 5)
           userParams.neighbors = fix(value);
          else
-            error('Damkjer:InvalidCount', ...
-                  ['Number of Neighbors must be a real valued positive '...
+            error('Damkjer:InvalidCount',                                   ...
+                  ['Number of Neighbors must be a real valued positive '    ...
                    'integer greater or equal to 5']);
          end
       case 'radius'
-         if (isscalar(value) && ...
-             isnumeric(value) && ...
-             isreal(value) && ...
+         if (isscalar(value) &&                                             ...
+             isnumeric(value) &&                                            ...
+             isreal(value) &&                                               ...
              value > 0)
             userParams.radius = value;
          else
-            error('Damkjer:InvalidRadius', ...
+            error('Damkjer:InvalidRadius',                                  ...
                   'Radius must be a real valued positive scalar');
          end
       case 'counts'
-         if (isvector(value)  && ...
-             isreal(value)    && ...
-             issorted(value)  && ...
+         if (isvector(value)  &&                                            ...
+             isreal(value)    &&                                            ...
+             issorted(value)  &&                                            ...
              all(value >= 5))
             userParams.counts = fix(value);
          else
-            error('Damkjer:InvalidCount', ...
+            error('Damkjer:InvalidCount',                                   ...
                   ['Counts must be a sorted vector of real valued positive '...
                    'integers greater or equal to 5']);
          end
       case 'steps'
-         if (isvector(value)  && ...
-             isreal(value)    && ...
-             issorted(value)  && ...
+         if (isvector(value)  &&                                            ...
+             isreal(value)    &&                                            ...
+             issorted(value)  &&                                            ...
              all(value > 0))
             userParams.steps = value;
          else
-            error('Damkjer:InvalidSteps', ...
-                  ['Steps must be a sorted vector of real valued positive '...
+            error('Damkjer:InvalidSteps',                                   ...
+                  ['Steps must be a sorted vector of real valued positive ' ...
                    'values']);
          end
@@ -771,22 +587,22 @@
    % Check for mutually exclusive options.
    if (~isempty(userParams.counts) && userParams.neighbors >= 5)
-      error('Damkjer:MutExOpts', ...
+      error('Damkjer:MutExOpts',                                            ...
             '''neighbors'' and ''counts'' options are mutually exclusive');
    end
    
    if (~isempty(userParams.steps) && userParams.radius > 0)
-      error('Damkjer:MutExOpts', ...
+      error('Damkjer:MutExOpts',                                            ...
             '''steps'' and ''radius'' options are mutually exclusive');
    end
    
    if (~isempty(userParams.counts) && ~isempty(userParams.steps))
-      error('Damkjer:MutExOpts', ...
+      error('Damkjer:MutExOpts',                                            ...
             '''steps'' and ''counts'' options are mutually exclusive');
    end
 
    % Default, if necessary.
-   if (userParams.neighbors <= 0 && ...
-       userParams.radius <= 0 && ...
-       isempty(userParams.counts) && ...
+   if (userParams.neighbors <= 0 &&                                         ...
+       userParams.radius <= 0 &&                                            ...
+       isempty(userParams.counts) &&                                        ...
        isempty(userParams.steps))
       userParams.radius = 1;
Index: Damkjer/Util/FileIO/LasFile/LasFile.m
===================================================================
--- Damkjer/Util/FileIO/LasFile/LasFile.m	(revision 12)
+++ Damkjer/Util/FileIO/LasFile/LasFile.m	(revision 15)
@@ -294,5 +294,5 @@
          pointData = lasFile.pPoints;
       end
-      
+
       %************************************************************************
       % LasFile/get.gpsTime
Index: Damkjer/Util/FileIO/LasFile/LasPublicHeader.m
===================================================================
--- Damkjer/Util/FileIO/LasFile/LasPublicHeader.m	(revision 12)
+++ Damkjer/Util/FileIO/LasFile/LasPublicHeader.m	(revision 15)
@@ -264,5 +264,5 @@
       %
       % The scale factor fields contain a double floating point value
-      % that is uysed to scale the corresponding X, Y, and Z long values
+      % that is used to scale the corresponding X, Y, and Z long values
       % within the point records. The corresponding X, Y, and Z scale
       % factor must be multiplied by the X, Y, or Z point record value to
@@ -275,5 +275,5 @@
       %
       % The scale factor fields contain a double floating point value
-      % that is uysed to scale the corresponding X, Y, and Z long values
+      % that is used to scale the corresponding X, Y, and Z long values
       % within the point records. The corresponding X, Y, and Z scale
       % factor must be multiplied by the X, Y, or Z point record value to
@@ -286,5 +286,5 @@
       %
       % The scale factor fields contain a double floating point value
-      % that is uysed to scale the corresponding X, Y, and Z long values
+      % that is used to scale the corresponding X, Y, and Z long values
       % within the point records. The corresponding X, Y, and Z scale
       % factor must be multiplied by the X, Y, or Z point record value to
Index: Damkjer/Util/MATLAB/VpTreeAPI/VpTreeAPI.cpp
===================================================================
--- Damkjer/Util/MATLAB/VpTreeAPI/VpTreeAPI.cpp	(revision 14)
+++ Damkjer/Util/MATLAB/VpTreeAPI/VpTreeAPI.cpp	(revision 15)
@@ -427,5 +427,5 @@
    // superior results.
    //***
-   #pragma omp parallel for
+   #pragma omp parallel for schedule(guided)
    for (int q = 0; q < queryData.size(); ++q)
    {
@@ -458,5 +458,5 @@
    // parallel.
    //***
-   #pragma omp parallel for
+   #pragma omp parallel for schedule(guided)
    for (int q = 0; q < queryData.size(); ++q)
    {  
@@ -510,5 +510,5 @@
       // parallel.
       //***
-      #pragma omp parallel for
+      #pragma omp parallel for schedule(guided)
       for (int q = 0; q < queryData.size(); ++q)
       {
@@ -687,5 +687,5 @@
    // superior results.
    //***
-   #pragma omp parallel for
+   #pragma omp parallel for schedule(guided)
    for (int q = 0; q < queryData.size(); ++q)
    {
@@ -717,5 +717,5 @@
    // parallel.
    //***
-   #pragma omp parallel for
+   #pragma omp parallel for schedule(guided)
    for (int q = 0; q < queryData.size(); ++q)
    {  
@@ -769,5 +769,5 @@
       // parallel.
       //***
-      #pragma omp parallel for
+      #pragma omp parallel for schedule(guided)
       for (int q = 0; q < queryData.size(); ++q)
       {
Index: Damkjer/Util/Math/fastcenter.cpp
===================================================================
--- Damkjer/Util/Math/fastcenter.cpp	(revision 12)
+++ Damkjer/Util/Math/fastcenter.cpp	(revision 15)
@@ -93,5 +93,5 @@
 #endif
 
-   #pragma omp parallel for
+   #pragma omp parallel for schedule(guided)
    for (int cellp = 0; cellp < cells; ++cellp)
    {
Index: Damkjer/Util/Math/fastcoeffvar.cpp
===================================================================
--- Damkjer/Util/Math/fastcoeffvar.cpp	(revision 12)
+++ Damkjer/Util/Math/fastcoeffvar.cpp	(revision 15)
@@ -94,5 +94,5 @@
 #endif
 
-   #pragma omp parallel for
+   #pragma omp parallel for schedule(guided)
    for (int cellp = 0; cellp < cells; ++cellp)
    {
Index: Damkjer/Util/Math/fastcov.cpp
===================================================================
--- Damkjer/Util/Math/fastcov.cpp	(revision 14)
+++ Damkjer/Util/Math/fastcov.cpp	(revision 15)
@@ -131,5 +131,5 @@
 #endif
 
-   #pragma omp parallel for
+   #pragma omp parallel for schedule(guided)
    for (int cellp = 0; cellp < cells; ++cellp)
    {
Index: Damkjer/Util/Math/fastsetdual.cpp
===================================================================
--- Damkjer/Util/Math/fastsetdual.cpp	(revision 13)
+++ Damkjer/Util/Math/fastsetdual.cpp	(revision 15)
@@ -137,5 +137,5 @@
    // parallel.
    //***
-   #pragma omp parallel for
+   #pragma omp parallel for schedule(guided)
    for (int elem = 0; elem < maxElem; ++elem)
    {  
Index: Damkjer/Util/Math/par_eig.cpp
===================================================================
--- Damkjer/Util/Math/par_eig.cpp	(revision 12)
+++ Damkjer/Util/Math/par_eig.cpp	(revision 15)
@@ -111,5 +111,5 @@
 #endif
 
-   #pragma omp parallel for
+   #pragma omp parallel for schedule(guided)
    for (int cellp = 0; cellp < cells; ++cellp)
    {
@@ -150,5 +150,5 @@
 #endif
 
-      #pragma omp parallel for
+      #pragma omp parallel for schedule(guided)
       for (int cellp = 0; cellp < cells; ++cellp)
       {
Index: Damkjer/Util/SpatialIndexing/VpTree/VpTree.hpp
===================================================================
--- Damkjer/Util/SpatialIndexing/VpTree/VpTree.hpp	(revision 12)
+++ Damkjer/Util/SpatialIndexing/VpTree/VpTree.hpp	(revision 15)
@@ -201,5 +201,5 @@
       ++threads;
       
-      #pragma omp parallel
+      #pragma omp parallel num_threads(2)
       {         
          #pragma omp sections nowait
Index: Damkjer/Util/SpatialIndexing/VpTree/VpTree_Leaf.hpp
===================================================================
--- Damkjer/Util/SpatialIndexing/VpTree/VpTree_Leaf.hpp	(revision 13)
+++ Damkjer/Util/SpatialIndexing/VpTree/VpTree_Leaf.hpp	(revision 15)
Index: Damkjer/Util/Util.vcxproj
===================================================================
--- Damkjer/Util/Util.vcxproj	(revision 13)
+++ Damkjer/Util/Util.vcxproj	(revision 15)
@@ -39,4 +39,5 @@
     <ClInclude Include="Dictionaries\SplayTree.hpp" />
     <ClInclude Include="Exception\Exception.h" />
+    <ClInclude Include="LPt.h" />
     <ClInclude Include="MATLAB\ClassHandle.h" />
     <ClInclude Include="MATLAB\ClassHandle.hpp" />
@@ -63,4 +64,5 @@
   <ItemGroup>
     <ClCompile Include="Exception\Exception.cpp" />
+    <ClCompile Include="LPt.cc" />
     <ClCompile Include="Streams\BlockIndent.cpp" />
     <ClCompile Include="Streams\FormatFilter.cpp" />
Index: Damkjer/Util/Util.vcxproj.filters
===================================================================
--- Damkjer/Util/Util.vcxproj.filters	(revision 13)
+++ Damkjer/Util/Util.vcxproj.filters	(revision 15)
@@ -88,4 +88,7 @@
       <Filter>Template Implementation Files</Filter>
     </ClInclude>
+    <ClInclude Include="LPt.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
@@ -102,4 +105,7 @@
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="LPt.cc">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
 </Project>
