diff --git a/src/Filter.hpp b/src/Filter.hpp
index 5ecea7614bb3ae5f45fb3c32e4f5c17a2fdd6208..5e4bd3484a3e65c883ddd29c5ca38d710d71e4af 100644
--- a/src/Filter.hpp
+++ b/src/Filter.hpp
@@ -6,6 +6,9 @@
  */
 #ifndef FILTER_HPP_
 #define FILTER_HPP_
+#include <errno.h>
+#include <sys/time.h>
+#include <sys/resource.h>
 
 #include "CountMinSketch.hpp"
 #include "ReadProcessor.h"
diff --git a/src/ROCKparams.cpp b/src/ROCKparams.cpp
index 947c64c1caa1794bd88d97426931a28d230b5ac0..813374d640f0d279e4f549930c37e899fa8b5ff1 100644
--- a/src/ROCKparams.cpp
+++ b/src/ROCKparams.cpp
@@ -222,3 +222,60 @@ int ROCKparams::processInOutFileArgs(const std::vector<string>& v_input_lines,st
     }
     return EXIT_SUCCESS;
 }
+
+void ROCKparams::initFromMainOptsArgs(int argc,char ** argv) {
+        int i;
+        std::vector<string> v_input_lines;
+        std::vector<string> v_output_lines;
+
+        while((i = getopt(argc, argv, "i:o:l:k:c:C:g:n:v")) != -1) {
+            switch(i) {
+                case 'i':
+                    input_file=optarg;break;
+                case 'c':
+                    parms.kappa_prime=atoi(optarg);break;
+                case 'h':
+                    usage(EXIT_SUCCESS); break;
+                case 'o':
+                    output_file=optarg; break;
+                case 'C':
+                    parms.kappa=atoi(optarg);
+                    if (parms.kappa<=0 || parms.kappa>get_mask<unsigned short>::value) {
+                        cout<<"Bad value for kappa. Must choose kappa so that 0<kappa<="<<get_mask<unsigned short>::value<<endl;
+                        usage(EXIT_FAILURE);
+                    }
+                    break;
+                case 'l':
+                    parms.lambda = atoi(optarg);
+                    if (parms.lambda<=0) {
+                        cout<<"Bad value for lambda. Choose a value that is >0 or let ROCK choose for you."<<endl;
+                        usage(EXIT_FAILURE);
+                    }
+                    break;
+                case 'k':
+                    k=atoi(optarg);
+                    if (k<=0 || k>32) {
+                        cout<<"Bad value for k. Must choose k so that 0<k<=32."<<endl;
+                        usage(EXIT_FAILURE);
+                    }
+                    break;
+                case 'n':
+                    nb_k_mers=atoi(optarg);break; // number of distinct k-mers
+                case 'g':
+                    // cout<<optarg<<endl;
+                    g=atoi(optarg);
+                    break;
+                case 'v':
+                    verbose_mode=1;
+                    break;
+                default:
+                    usage(EXIT_FAILURE); break; }
+            }
+            processMainArgs(optind, argc, argv,v_input_lines);
+            optArgConsistency(input_file,output_file,g,parms,nb_k_mers,v_input_lines);
+            if (nb_k_mers) {
+                expected_collision_proba=getCollisionProba(nb_k_mers,parms.lambda);
+            }
+            if (v_input_lines.empty() && (loadInOutFileArgs(input_file,output_file,v_input_lines,v_output_lines)==EXIT_FAILURE)) throw EXIT_FAILURE;
+            if (processInOutFileArgs(v_input_lines,v_output_lines,single_files,v_PE_files,f_id)!=EXIT_SUCCESS) throw EXIT_FAILURE;
+        }
diff --git a/src/ROCKparams.h b/src/ROCKparams.h
index 5448008ea62115fbeddaae8b691afb16d7db8516..a970a5f83c48f3afb59c4bf2a13d4cf5983b4882 100644
--- a/src/ROCKparams.h
+++ b/src/ROCKparams.h
@@ -42,7 +42,7 @@ class ROCKparams{
 
 
     void computeLambda();
-    void processMainArgs(int optind, const int argc, char ** argv,std::vector<string>& v_input_lines);
+    void processMainArgs(int optind, int argc, char ** argv,std::vector<string>& v_input_lines);
     int loadInOutFileArgs(const std::string& input_file,const std::string& output_file,std::vector<string>& v_input_lines,std::vector<string>& v_output_lines);
     int loadFileArgs(const std::string& afile,std::vector<string>& v_lines);
     void removePathfromFName(string& FName);
@@ -79,62 +79,7 @@ public:
 
 
 
-    void initFromMainOptsArgs(int argc,char * argv[]) {
-        int i;
-        std::vector<string> v_input_lines;
-        std::vector<string> v_output_lines;
-
-        while((i = getopt(argc, argv, "i:o:l:k:c:C:g:n:v")) != -1) {
-            switch(i) {
-                case 'i':
-                    input_file=optarg;break;
-                case 'c':
-                    parms.kappa_prime=atoi(optarg);break;
-                case 'h':
-                    usage(EXIT_SUCCESS); break;
-                case 'o':
-                    output_file=optarg; break;
-                case 'C':
-                    parms.kappa=atoi(optarg);
-                    if (parms.kappa<=0 || parms.kappa>get_mask<unsigned short>::value) {
-                        cout<<"Bad value for kappa. Must choose kappa so that 0<kappa<="<<get_mask<unsigned short>::value<<endl;
-                        usage(EXIT_FAILURE);
-                    }
-                    break;
-                case 'l':
-                    parms.lambda = atoi(optarg);
-                    if (parms.lambda<=0) {
-                        cout<<"Bad value for lambda. Choose a value that is >0 or let ROCK choose for you."<<endl;
-                        usage(EXIT_FAILURE);
-                    }
-                    break;
-                case 'k':
-                    k=atoi(optarg);
-                    if (k<=0 || k>32) {
-                        cout<<"Bad value for k. Must choose k so that 0<k<=32."<<endl;
-                        usage(EXIT_FAILURE);
-                    }
-                    break;
-                case 'n':
-                    nb_k_mers=atoi(optarg);break; // number of distinct k-mers
-                case 'g':
-                    // cout<<optarg<<endl;
-                    g=atoi(optarg);
-                    break;
-                case 'v':
-                    verbose_mode=1;
-                    break;
-                default:
-                    usage(EXIT_FAILURE); break; }
-        }
-        processMainArgs(optind, argc, argv,v_input_lines);
-        optArgConsistency(input_file,output_file,g,parms,nb_k_mers,v_input_lines);
-        if (nb_k_mers) {
-            expected_collision_proba=getCollisionProba(nb_k_mers,parms.lambda);
-        }
-        if (v_input_lines.empty() && (loadInOutFileArgs(input_file,output_file,v_input_lines,v_output_lines)==EXIT_FAILURE)) throw EXIT_FAILURE;
-        if (processInOutFileArgs(v_input_lines,v_output_lines,single_files,v_PE_files,f_id)!=EXIT_SUCCESS) throw EXIT_FAILURE;
-    }
+    void initFromMainOptsArgs(int argc,char ** argv);
 
     CMSparams getCMSparams() {
         return parms;