diff --git a/fsl_glm.cc b/fsl_glm.cc
index 64df3baa19bdd86c2cde0808994d36e59936cfd4..d20d01d69d2d4b86ff75fba5777a5bd78b4d1aa4 100644
--- a/fsl_glm.cc
+++ b/fsl_glm.cc
@@ -53,7 +53,7 @@ using namespace std;
 		false, requires_argument);
 	Option<bool> perfvn(string("--vn"),FALSE,
 		string("        perfrom MELODIC variance-normalisation on data"),
-		false, requires_argument);
+		false, no_argument);
 	Option<int> help(string("-h,--help"), 0,
 		string("display this help text"),
 		false,no_argument);
@@ -156,6 +156,9 @@ int setup(){
 		
 		data = tmpdata.matrix(mask);
 		voxels = data.Ncols();
+		data = remmean(data,1);
+		if(perfvn.value())
+			vnscales = Melodic::varnorm(data);
 	}
 	else
 		data = read_ascii_matrix(fnin.value());	
@@ -176,8 +179,7 @@ int setup(){
 	meanR=mean(data,1);
 	data = remmean(data,1);
 	design = remmean(design,1);
-	if(perfvn.value())
-		vnscales = Melodic::varnorm(data);
+
 	if(fncontrasts.value()>""){//read contrast		
 		contrasts = read_ascii_matrix(fncontrasts.value());
 		if(!(contrasts.Ncols()==design.Ncols())){
diff --git a/meldata.cc b/meldata.cc
index 28bf7277280e7b9b96bb2476a209972f9bb63409..e9beff54c09de4288cb8bbe991dc987789540bfc 100644
--- a/meldata.cc
+++ b/meldata.cc
@@ -885,6 +885,11 @@ namespace Melodic{
     unmixMatrix = pinv(mixMatrix);
   }
 
+  void MelodicData::reregress(){
+	if((numfiles > 1)){
+	   
+	}
+  }
   void MelodicData::status(const string &txt)
   {
     cout << "MelodicData Object " << txt << endl;
diff --git a/meldata.h b/meldata.h
index 5944013b8a9aa9008bc78f006f824b0caa2669a0..37eb6d5cb9e66cd8ec353a60def9ca46a3ffe159 100644
--- a/meldata.h
+++ b/meldata.h
@@ -189,6 +189,7 @@ namespace Melodic{
       }
       
       void sort();
+	  void reregress();
 
       volumeinfo tempInfo;
       vector<Matrix> DWM, WM;