diff --git a/FFT.cc b/FFT.cc
index 8765e389159d6d5775c9728b537de307ae2a670e..6d178d9e18f37aaab983eba156a72f74b875093d 100644
--- a/FFT.cc
+++ b/FFT.cc
@@ -7,46 +7,16 @@
 #include <string>
 #include <bits/stdc++.h>
 using namespace std::complex_literals;
+// PI
+const double PI{std::acos(-1)};
 
-int main()
+// Alg start----------------------------------------------------------------------------------------------------
+std::vector<std::complex<double>> fft(std::vector<std::complex<double>> inputVector,std::vector<std::complex<double>> returnVector,int n,double flag)
 {
-    // PI
-    const double PI{std::acos(-1)};
-
-    // inFile innehåller uHatt data och outFile är resulterande filen
-    std::string inFile{"sinus.txt"};
-    std::string outFile{"sinusFFT.txt"};
-    
-    // Perioden för funktionen
-    double T{2*PI};
-    int const n{16};
-    std::vector<std::complex<double>> inputVector;
-    std::complex<double> funcTransf[n];
-    
-    
-    // Hämtar data och sätter den på en vector
-    int loop = 0; 
-    std::string dataLine;
-    std::ifstream functionData (inFile);
-    std::complex<double> element;
-
-    if (functionData.is_open())
-    {
-      while ((std::getline (functionData,dataLine)) && (loop < n) )
-      {
-        std::istringstream is(dataLine);
-        is >> element;
-        inputVector.push_back(element); 
-        loop++;
-      }
-      functionData.close();
-    }
-
-    // alg start -------------------------------------------------------------
     std::complex<double> my[n];
     for(int i=0;i<n;i++)
     {
-        my[i]=std::exp(-1i*T*static_cast<double> (i)/static_cast<double> (n));
+        my[i]=std::exp(flag*1i*2.0*PI*static_cast<double> (i)/static_cast<double> (n));
     }
 
 
@@ -58,8 +28,8 @@ int main()
     // F2 mult.
     for(int i=0;i<n;i+=2)
     {
-        funcTransf[i]=inputVector[i]+inputVector[i+1];
-        funcTransf[i+1]=inputVector[i]-inputVector[i+1];
+        returnVector[i]=inputVector[i]+inputVector[i+1];
+        returnVector[i+1]=inputVector[i]-inputVector[i+1];
     }
 
     // I and D mult.
@@ -70,29 +40,91 @@ int main()
         {
             for(int j=0;j<n;j+=4)
             {
-                s = s + funcTransf[j] + std::pow(my[m],m) * funcTransf[j+2];
+                s = s + returnVector[j] + std::pow(my[m],m) * returnVector[j+2];
             }
         }
         else
         {
             for(int j=1;j<n;j+=4)
             {
-                s = s + funcTransf[j] + std::pow(my[m],m) * funcTransf[j+2];
+                s = s + returnVector[j] + std::pow(my[m],m) * returnVector[j+2];
             }
         }
-         funcTransf[m]= s / static_cast<double> (std::sqrt(n));   
+         returnVector[m]= s / static_cast<double> (std::sqrt(n));   
+    }
+    return returnVector;
+}
+// Alg slut----------------------------------------------------------------------------------------------------
+
+
+int main()
+{
+    FFT call;
+    int const n{16};
+    // inFile innehåller uHatt data och outFile är resulterande filen
+    std::string inFile{"sinus.txt"};
+    std::string outFile{"inversSinusFFT.txt"};
+    
+    std::vector<std::complex<double>> inputVector = call.getInput(inFile,n);
+    std::complex<double> funcTransf[n];
+    // Skapar två vektorer av storlek n med nollor i sig
+    std::vector<std::complex<double>> returnVector1;
+    std::vector<std::complex<double>> returnVector2;
+    for(int i=0;i<n;i++)
+    {
+        returnVector1.push_back(0);
+        returnVector2.push_back(0);
+    }
+    
+    // Anroppar alg -------------------------------------------------------------
+    std::vector<std::complex<double>> transf = fft(inputVector,returnVector1,n,-1);
+    std::vector<std::complex<double>> invTransf = fft(transf,returnVector2,n,1);
+    // ---------------------------------------------------------------------------
+    call.printToFile(invTransf,outFile,n);
+    std::cout << "FFT done"<<'\n';
+    return 0;
+}
+
+
+
+
+
+
+
+// Skriva/läsa-----------------------------------------------------------------------------
+std::vector<std::complex<double>> FFT::getInput(std::string inFile, int n)
+{
+    std::vector<std::complex<double>> inputVector;
+    // Hämtar data och sätter den på en vector
+    int loop = 0; 
+    std::string dataLine;
+    std::ifstream functionData (inFile);
+    std::complex<double> element;
+
+    if (functionData.is_open())
+    {
+      while ((std::getline (functionData,dataLine)) && (loop < n) )
+      {
+        std::istringstream is(dataLine);
+        is >> element;
+        inputVector.push_back(element); 
+        loop++;
+      }
+      functionData.close();
     }
-    // Alg end ----------------------------------------------------------------
+    return inputVector;
+}
 
+void FFT::printToFile(std::vector<std::complex<double>> printVector, std::string fileName, int n)
+{
+  // Skriver ut inversFuncTransf till en fil
     std::ofstream resultFile;
-    resultFile.open(outFile);
+    resultFile.open(fileName);
     // Sätter önskad antal decimaler
     resultFile << std::fixed << std::setprecision(10);
     for (int i=0;i<n;i++)
     {
-      resultFile << funcTransf[i].real() << "," << funcTransf[i].imag() << '\n'; 
+      resultFile << printVector[i].real() << "," << printVector[i].imag() << '\n'; 
     }
     resultFile.close();
-    std::cout << "FFT done"<<'\n';
-    return 0;
 }
\ No newline at end of file
diff --git a/FFTW.cc b/FFTW.cc
index bf85078b5557cb3846eda1f36e04dc9a591948b4..609719aa37981c07a5b36ff9de5adebe96a10b20 100644
--- a/FFTW.cc
+++ b/FFTW.cc
@@ -13,7 +13,7 @@
 int main()
 {
     // Antal punkter som ska transformeras/inverstransformeras
-    int const n=20;
+    int const n=16;
 
     // Input funktions data
     fftw_complex functionData[n];
diff --git a/Header files/FFT.h b/Header files/FFT.h
index 8fe06a9eb6a1cd40108d27e940b4ac90b77b95d1..3bbe83a771cf59ad63dc7fe50f6e483fae2328c0 100644
--- a/Header files/FFT.h	
+++ b/Header files/FFT.h	
@@ -1,7 +1,11 @@
 #include <complex>
+#include <vector>
+#include <string>
 
 class FFT
 {
 public:
+    void printToFile(std::vector<std::complex<double>> printVector, std::string fileName, int n);
+    std::vector<std::complex<double>> getInput(std::string inFile, int n);
 private:
 };
diff --git a/README.md b/Legacy code/README.md
similarity index 100%
rename from README.md
rename to Legacy code/README.md
diff --git a/RECFFT.cc b/RECFFT.cc
index b2ddd016a8e735cbcee6822c48800c6e78226527..37b18a39797a6f599539c6564346b1d3c46d2b22 100644
--- a/RECFFT.cc
+++ b/RECFFT.cc
@@ -26,7 +26,7 @@ std::vector<std::complex<double>> fftrec(std::vector<std::complex<double>> f,int
     {
         std::vector<std::complex<double>> a1;
         std::vector<std::complex<double>> b1;
-        for(int i=0;i<=N;i++)
+        for(int i=0;i<=N-1;i++)
         {
             if(i%2==0)
             {
diff --git a/a.out b/a.out
index b2d99b83c42f7267193543eec5e9786faa298bda..80da0fc4c490fb90190f21fd6e4d7a816097cc4d 100755
Binary files a/a.out and b/a.out differ
diff --git a/inversSinusFFT.txt b/inversSinusFFT.txt
new file mode 100644
index 0000000000000000000000000000000000000000..69763740a6b142e5056b3cd292d46b218a0612df
--- /dev/null
+++ b/inversSinusFFT.txt
@@ -0,0 +1,16 @@
+2.6144470127,-0.2600135238
+-0.2468330940,0.4963457911
+1.8887400240,1.2449675942
+-0.4467231138,0.0521004861
+3.2597044536,0.0986068136
+-0.2983092174,0.2022103797
+2.0395450203,1.5938019973
+-0.7032953600,0.4366120951
+3.9948384450,0.8602987942
+-0.9557205768,0.3536651993
+2.0439507792,1.9582034439
+-0.0042324440,0.1903385069
+4.7053747961,1.4958153924
+0.2336226209,0.1877846232
+2.3712891621,2.3812651524
+-0.9055292843,0.3578415425
diff --git a/inversSinusFFTW.txt b/inversSinusFFTW.txt
index 631549b66535e625f863c8e407a8a1467798e0c6..b5763b76b460b604e0f4797ce267bed1712e3cae 100644
--- a/inversSinusFFTW.txt
+++ b/inversSinusFFTW.txt
@@ -1,20 +1,16 @@
 0,0
-0.841471,1.67914e-19
-0.909297,-6.86156e-18
-0.14112,-1.42613e-17
+0.841471,-7.51373e-17
+0.909297,-2.45327e-18
+0.14112,-1.96262e-17
 -0.756802,0
--0.958924,1.11022e-17
--0.279415,1.79638e-17
-0.656987,-3.70247e-18
+-0.958924,1.96262e-17
+-0.279415,2.45327e-18
+0.656987,-3.5885e-17
 0.989358,0
-0.412118,6.69364e-18
--0.544021,-2.22045e-17
--0.99999,1.67914e-19
+0.412118,3.5885e-17
+-0.544021,2.45327e-18
+-0.99999,-1.96262e-17
 -0.536573,0
-0.420167,-1.42613e-17
-0.990607,1.79638e-17
-0.650288,1.11022e-17
--0.287903,0
--0.961397,-3.70247e-18
--0.750987,-6.86156e-18
-0.149877,6.69364e-18
+0.420167,1.96262e-17
+0.990607,-2.45327e-18
+0.650288,7.51373e-17
diff --git a/inversSinusRECFFT.txt b/inversSinusRECFFT.txt
index 696c25a14291906db305be413574579273801acf..bac523b0fbb4e856e7d1874a9287822625bafb49 100644
--- a/inversSinusRECFFT.txt
+++ b/inversSinusRECFFT.txt
@@ -1,16 +1,16 @@
-9.1398206044,-5.4536844553
-9.6809334767,-2.9346356508
--4.8533132756,5.9696298177
-3.1631893166,-3.1673031952
--1.0681141449,-3.9889275745
-2.5085516570,4.2659503988
--2.0451485834,-2.2295090922
--0.9188801268,0.4380280064
--0.9681317764,-0.3772564925
--9.1997883841,3.8848288233
--1.0035716440,-21.6139703680
-10.2159678974,8.3013102465
-0.3726256441,0.3068522515
--12.6332527731,5.2140573888
--3.2499819989,-13.7342402161
-4.0199196309,-4.8413742979
+-0.6806533169,-2.1294354386
+-0.1269205667,-0.7429836014
+-0.6806533169,-0.2032087431
+-0.1269205667,-0.5181073468
+-0.6806533169,0.3420809383
+-0.1269205667,-0.5126149384
+-0.6806533169,1.0322190424
+-0.1269205667,-0.7996013102
+-0.6806533169,3.9315113747
+-6.8586884451,-3.2520124213
+6.5937260977,-4.5170493085
+-1.2558806312,8.7942247812
+-6.7350732794,-5.8063964610
+7.5444736306,-1.0391267346
+-2.9159773025,7.3502785957
+-5.3828133564,-1.9297784284
diff --git a/sinus.txt b/sinus.txt
index 65d401a5500d6b7a39224c26258f0f79a39c0124..5aad5b0d641e48513bdc2397c23e38ef74b4ee85 100644
--- a/sinus.txt
+++ b/sinus.txt
@@ -14,7 +14,3 @@
 0.4201670368266409
 0.9906073556948704
 0.6502878401571168
--0.2879033166650653
--0.9613974918795568
--0.750987246771676
-0.14987720966295234