diff --git a/factorize.m b/factorize.m
index 62a64d18602dd77069e9016ee699e257e8fe8e2c..1c71f54d060dab54b84a9a1cad7cfa908f332787 100644
--- a/factorize.m
+++ b/factorize.m
@@ -1,27 +1,15 @@
-function [LFB,C,U,S,V] = factorize(LFRef,varargin)
+function [LFB,C,U,S,V] = factorize(LFRef,k,varargin)
 %FACTORIZE Summary of this function goes here
 %   Detailed explanation goes here
 
-sz = size(LFRef);
-Mask = isnan(LFRef); LFRef(Mask) = 0;
-vecResh = @(x)   reshape(x,size(x,1)*size(x,2),[])';
-boxResh = @(x,sz) reshape(x',sz);
+LFSize = size(LFRef);
+ImgSize = LFSize(1:3);
+ImgRes  = LFSize(4:end);
 
-LFRefvec = vecResh(LFRef);
-Maskvec = vecResh(Mask);
+LFRef  = reshape(LFRef,prod(ImgSize),prod(ImgRes));
 
-kList = 1:size(LFRefvec,2);
-if nargin>1
-    kList = varargin{1};
-end
+[LFB,C,U,S,V] = utils.factorize(LFRef,k);
 
-[U,S,V] = svd_nsq(LFRefvec);
-B = U*S;
-C = V';
+LFB = reshape(LFB ,[ImgSize,k,1]);
 
-B(Maskvec) = NaN;
-B = B(:,kList);
-C = C(kList,:);
-
-LFB = boxResh(B,[numel(kList),1,sz(3:end)]);
 end
\ No newline at end of file