diff --git a/Sample/Material/WavevectorInfo.cpp b/Base/Vector/WavevectorInfo.cpp
similarity index 93%
rename from Sample/Material/WavevectorInfo.cpp
rename to Base/Vector/WavevectorInfo.cpp
index 6bede6a5bffac28f35b036c3fe9175ca0d608b6d..9c8175ec84484a65f7f58fbac366dc7b58980c82 100644
--- a/Sample/Material/WavevectorInfo.cpp
+++ b/Base/Vector/WavevectorInfo.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      Sample/Material/WavevectorInfo.cpp
+//! @file      Base/Vector/WavevectorInfo.cpp
 //! @brief     Implements WavevectorInfo.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 //  ************************************************************************************************
 
-#include "Sample/Material/WavevectorInfo.h"
+#include "Base/Vector/WavevectorInfo.h"
 #include "Base/Vector/Transform3D.h"
 
 WavevectorInfo::WavevectorInfo(cvector_t ki, cvector_t kf, double wavelength)
diff --git a/Sample/Material/WavevectorInfo.h b/Base/Vector/WavevectorInfo.h
similarity index 86%
rename from Sample/Material/WavevectorInfo.h
rename to Base/Vector/WavevectorInfo.h
index c0e6873b3b530dc6db6a804d6bb39f3f99ed0493..59fa7b48ce5fc9d1020b37099ca955a729119275 100644
--- a/Sample/Material/WavevectorInfo.h
+++ b/Base/Vector/WavevectorInfo.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      Sample/Material/WavevectorInfo.h
+//! @file      Base/Vector/WavevectorInfo.h
 //! @brief     Defines WavevectorInfo.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -13,8 +13,8 @@
 //  ************************************************************************************************
 
 #ifndef USER_API
-#ifndef BORNAGAIN_SAMPLE_MATERIAL_WAVEVECTORINFO_H
-#define BORNAGAIN_SAMPLE_MATERIAL_WAVEVECTORINFO_H
+#ifndef BORNAGAIN_BASE_VECTOR_WAVEVECTORINFO_H
+#define BORNAGAIN_BASE_VECTOR_WAVEVECTORINFO_H
 
 #include "Base/Vector/Vectors3D.h"
 
@@ -41,5 +41,5 @@ private:
     double m_vacuum_wavelength;
 };
 
-#endif // BORNAGAIN_SAMPLE_MATERIAL_WAVEVECTORINFO_H
+#endif // BORNAGAIN_BASE_VECTOR_WAVEVECTORINFO_H
 #endif // USER_API
diff --git a/Resample/Element/DiffuseElement.cpp b/Resample/Element/DiffuseElement.cpp
index 9cab61eb5f10689135073d23d436ac6c9e8b7368..5996868403ff3b94e493a46291285468e8665a50 100644
--- a/Resample/Element/DiffuseElement.cpp
+++ b/Resample/Element/DiffuseElement.cpp
@@ -15,7 +15,7 @@
 #include "Resample/Element/DiffuseElement.h"
 #include "Base/Pixel/IPixel.h"
 #include "Base/Vector/Direction.h"
-#include "Sample/Material/WavevectorInfo.h"
+#include "Base/Vector/WavevectorInfo.h"
 
 DiffuseElement::DiffuseElement(double wavelength, double alpha_i, double phi_i,
                                std::unique_ptr<IPixel> pixel,
diff --git a/Resample/FFCompute/ComputeBA.cpp b/Resample/FFCompute/ComputeBA.cpp
index 6bc0780f6853615bd33e6fd75075888dade9ae06..dd299c0292a7288ad1ff5e145a437b8c6ff347ad 100644
--- a/Resample/FFCompute/ComputeBA.cpp
+++ b/Resample/FFCompute/ComputeBA.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "Resample/FFCompute/ComputeBA.h"
-#include "Sample/Material/WavevectorInfo.h"
+#include "Base/Vector/WavevectorInfo.h"
 #include "Sample/Scattering/IFormFactor.h"
 
 ComputeBA::ComputeBA(const IFormFactor& ff, size_t i_layer) : IComputeScalar(ff, i_layer) {}
diff --git a/Resample/FFCompute/ComputeBAPol.cpp b/Resample/FFCompute/ComputeBAPol.cpp
index 47df67a00ddfdb960a7370e69a56430ddf536843..f857b5bcfe9d5bf558cc86e949b11dbd986f53f4 100644
--- a/Resample/FFCompute/ComputeBAPol.cpp
+++ b/Resample/FFCompute/ComputeBAPol.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "Resample/FFCompute/ComputeBAPol.h"
-#include "Sample/Material/WavevectorInfo.h"
+#include "Base/Vector/WavevectorInfo.h"
 #include "Sample/Scattering/IFormFactor.h"
 
 ComputeBAPol::ComputeBAPol(const IFormFactor& ff, size_t i_layer) : IComputePol(ff, i_layer) {}
diff --git a/Resample/FFCompute/ComputeDWBA.cpp b/Resample/FFCompute/ComputeDWBA.cpp
index 18f26b0128dc7c905c4178a254fddef6a622c8d6..6488110443e04406e80e780dfcd4f8aa6c3a190f 100644
--- a/Resample/FFCompute/ComputeDWBA.cpp
+++ b/Resample/FFCompute/ComputeDWBA.cpp
@@ -14,7 +14,7 @@
 
 #include "Resample/FFCompute/ComputeDWBA.h"
 #include "Resample/Flux/IFlux.h"
-#include "Sample/Material/WavevectorInfo.h"
+#include "Base/Vector/WavevectorInfo.h"
 #include "Sample/Scattering/IFormFactor.h"
 
 ComputeDWBA::ComputeDWBA(const IFormFactor& ff, size_t i_layer) : IComputeScalar(ff, i_layer) {}
diff --git a/Resample/FFCompute/ComputeDWBAPol.cpp b/Resample/FFCompute/ComputeDWBAPol.cpp
index df44f01f40596bb090cbe93b110d7611f0293903..7ce06c638ece06ce03b801165c4eacfe1c434045 100644
--- a/Resample/FFCompute/ComputeDWBAPol.cpp
+++ b/Resample/FFCompute/ComputeDWBAPol.cpp
@@ -14,7 +14,7 @@
 
 #include "Resample/FFCompute/ComputeDWBAPol.h"
 #include "Resample/Flux/IFlux.h"
-#include "Sample/Material/WavevectorInfo.h"
+#include "Base/Vector/WavevectorInfo.h"
 #include "Sample/Scattering/IFormFactor.h"
 
 namespace {
diff --git a/Resample/FFCompute/IComputePol.cpp b/Resample/FFCompute/IComputePol.cpp
index 0ce5b41dbe0bff27583b65e5d0b6b3f4443a97da..b400398eda8810d88bc591c0f8fb3f561bc61b79 100644
--- a/Resample/FFCompute/IComputePol.cpp
+++ b/Resample/FFCompute/IComputePol.cpp
@@ -15,7 +15,7 @@
 #include "Resample/FFCompute/IComputePol.h"
 #include "Resample/Element/DiffuseElement.h"
 #include "Resample/Flux/IFlux.h"
-#include "Sample/Material/WavevectorInfo.h"
+#include "Base/Vector/WavevectorInfo.h"
 
 Eigen::Matrix2cd IComputePol::coherentPolFF(const DiffuseElement& ele) const
 {
diff --git a/Resample/FFCompute/IComputeScalar.cpp b/Resample/FFCompute/IComputeScalar.cpp
index 39edfde82d4f6ddaa1ea2145802379aff209c382..1aa097fbe5880a891474c356ffc73ed20a347312 100644
--- a/Resample/FFCompute/IComputeScalar.cpp
+++ b/Resample/FFCompute/IComputeScalar.cpp
@@ -15,7 +15,7 @@
 #include "Resample/FFCompute/IComputeScalar.h"
 #include "Resample/Element/DiffuseElement.h"
 #include "Resample/Flux/IFlux.h"
-#include "Sample/Material/WavevectorInfo.h"
+#include "Base/Vector/WavevectorInfo.h"
 
 complex_t IComputeScalar::coherentFF(const DiffuseElement& ele) const
 {
diff --git a/Sample/Material/MagneticMaterialImpl.cpp b/Sample/Material/MagneticMaterialImpl.cpp
index 6635fbbd768b16a627f0ff50af3dc77a64d60cf6..d1bd0a904ea733edeaedef3a7fadc7cbc5812867 100644
--- a/Sample/Material/MagneticMaterialImpl.cpp
+++ b/Sample/Material/MagneticMaterialImpl.cpp
@@ -16,7 +16,7 @@
 #include "Base/Const/PhysicalConstants.h"
 #include "Base/Vector/Transform3D.h"
 #include "Sample/Material/MaterialUtils.h"
-#include "Sample/Material/WavevectorInfo.h"
+#include "Base/Vector/WavevectorInfo.h"
 #include <memory>
 
 using PhysConsts::gamma_n;
diff --git a/Sample/Material/MaterialBySLDImpl.cpp b/Sample/Material/MaterialBySLDImpl.cpp
index 0da09e92b9c6a45a24a5297936fd0fdab8a00604..a382e218fad46a604577b01ce319f05d0d12c422 100644
--- a/Sample/Material/MaterialBySLDImpl.cpp
+++ b/Sample/Material/MaterialBySLDImpl.cpp
@@ -14,7 +14,7 @@
 
 #include "Sample/Material/MaterialBySLDImpl.h"
 #include "Base/Const/Units.h"
-#include "Sample/Material/WavevectorInfo.h"
+#include "Base/Vector/WavevectorInfo.h"
 
 namespace {
 const double square_angstroms = Units::angstrom * Units::angstrom;
diff --git a/Sample/Material/RefractiveMaterialImpl.cpp b/Sample/Material/RefractiveMaterialImpl.cpp
index b13858ad416bcfa0d51a7f106de3849fb36b1f5b..d10920664b8976eb2cc5ffdc53a2ffeaaff9b714 100644
--- a/Sample/Material/RefractiveMaterialImpl.cpp
+++ b/Sample/Material/RefractiveMaterialImpl.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "Sample/Material/RefractiveMaterialImpl.h"
-#include "Sample/Material/WavevectorInfo.h"
+#include "Base/Vector/WavevectorInfo.h"
 
 RefractiveMaterialImpl::RefractiveMaterialImpl(const std::string& name, double delta, double beta,
                                                kvector_t magnetization)
diff --git a/Sample/Particle/FormFactorCrystal.cpp b/Sample/Particle/FormFactorCrystal.cpp
index 97aa53906dcfa95c114b556111bf7f9a077e15cc..f17251cc658c6078b0a671955674ed3b54d79e4f 100644
--- a/Sample/Particle/FormFactorCrystal.cpp
+++ b/Sample/Particle/FormFactorCrystal.cpp
@@ -14,7 +14,7 @@
 
 #include "Sample/Particle/FormFactorCrystal.h"
 #include "Base/Math/Constants.h"
-#include "Sample/Material/WavevectorInfo.h"
+#include "Base/Vector/WavevectorInfo.h"
 
 FormFactorCrystal::FormFactorCrystal(const Lattice3D& lattice, const IFormFactor& basis_form_factor,
                                      const IFormFactor& meso_form_factor, double position_variance)
diff --git a/Sample/Scattering/FormFactorDecoratorMaterial.cpp b/Sample/Scattering/FormFactorDecoratorMaterial.cpp
index 0e50a473eb663d8951a8ae9245d2937428b61754..ff03348924f39ff599b3cf06f65eb1b6c5221f11 100644
--- a/Sample/Scattering/FormFactorDecoratorMaterial.cpp
+++ b/Sample/Scattering/FormFactorDecoratorMaterial.cpp
@@ -15,7 +15,7 @@
 #include "Sample/Scattering/FormFactorDecoratorMaterial.h"
 #include "Base/Math/Constants.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Sample/Material/WavevectorInfo.h"
+#include "Base/Vector/WavevectorInfo.h"
 
 FormFactorDecoratorMaterial::FormFactorDecoratorMaterial(const IFormFactor& ff)
     : IFormFactorDecorator(ff)
diff --git a/Sample/Scattering/FormFactorDecoratorPositionFactor.cpp b/Sample/Scattering/FormFactorDecoratorPositionFactor.cpp
index 1717b681e8ce11494e7574d78cc29ce019fbb361..994b938d79258d82db03fc1ceea2a9875cd0e380 100644
--- a/Sample/Scattering/FormFactorDecoratorPositionFactor.cpp
+++ b/Sample/Scattering/FormFactorDecoratorPositionFactor.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "Sample/Scattering/FormFactorDecoratorPositionFactor.h"
-#include "Sample/Material/WavevectorInfo.h"
+#include "Base/Vector/WavevectorInfo.h"
 #include "Sample/Scattering/Rotations.h"
 
 FormFactorDecoratorPositionFactor::FormFactorDecoratorPositionFactor(const IFormFactor& ff,
diff --git a/Sample/Scattering/FormFactorDecoratorRotation.cpp b/Sample/Scattering/FormFactorDecoratorRotation.cpp
index dc1b8eed9dec84afd043fab37d199e658076e117..29d11456d659b0b0b343cdd84575febfe3cc3ee0 100644
--- a/Sample/Scattering/FormFactorDecoratorRotation.cpp
+++ b/Sample/Scattering/FormFactorDecoratorRotation.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "Sample/Scattering/FormFactorDecoratorRotation.h"
-#include "Sample/Material/WavevectorInfo.h"
+#include "Base/Vector/WavevectorInfo.h"
 #include "Sample/Scattering/Rotations.h"
 #include <memory>
 
diff --git a/Sample/Scattering/IBornFF.cpp b/Sample/Scattering/IBornFF.cpp
index 0c5c2d43f378474ada619f6856fe2ef47336b346..5536d3e2f046c62cc7fc4df23c99aa68595ba67e 100644
--- a/Sample/Scattering/IBornFF.cpp
+++ b/Sample/Scattering/IBornFF.cpp
@@ -14,7 +14,7 @@
 
 #include "Sample/Scattering/IBornFF.h"
 #include "Base/Utils/Algorithms.h"
-#include "Sample/Material/WavevectorInfo.h"
+#include "Base/Vector/WavevectorInfo.h"
 #include "Sample/Scattering/Rotations.h"
 #include "Sample/Shapes/IShape3D.h"
 #include <stdexcept>
diff --git a/Sample/Scattering/IFormFactor.cpp b/Sample/Scattering/IFormFactor.cpp
index b54a235e1fc07e9e43f9ee8b4dbecaee8e44fffc..ecca36a8c982ab0ae818f05f602c1d0bbee000e7 100644
--- a/Sample/Scattering/IFormFactor.cpp
+++ b/Sample/Scattering/IFormFactor.cpp
@@ -15,7 +15,7 @@
 #include "Sample/Scattering/IFormFactor.h"
 #include "Base/Py/PyFmt.h"
 #include "Base/Utils/StringUtils.h"
-#include "Sample/Material/WavevectorInfo.h"
+#include "Base/Vector/WavevectorInfo.h"
 #include "Sample/Scattering/FormFactorDecoratorPositionFactor.h"
 #include "Sample/Scattering/FormFactorDecoratorRotation.h"
 #include "Sample/Scattering/Rotations.h"
diff --git a/Tests/UnitTests/Core/Sample/MaterialTest.cpp b/Tests/UnitTests/Core/Sample/MaterialTest.cpp
index 51bbfd4d4008b6f5b31716615534059398598efb..f5f131ac89c6303ea0c1e68529b3a7301aa6d925 100644
--- a/Tests/UnitTests/Core/Sample/MaterialTest.cpp
+++ b/Tests/UnitTests/Core/Sample/MaterialTest.cpp
@@ -3,7 +3,7 @@
 #include "Sample/Material/Admixtures.h"
 #include "Sample/Material/MaterialBySLDImpl.h"
 #include "Sample/Material/RefractiveMaterialImpl.h"
-#include "Sample/Material/WavevectorInfo.h"
+#include "Base/Vector/WavevectorInfo.h"
 #include "Sample/Scattering/Rotations.h"
 #include "Tests/GTestWrapper/google_test.h"
 
diff --git a/Wrap/Swig/libBornAgainSample.i b/Wrap/Swig/libBornAgainSample.i
index 9fb33ff29946c047474f0775b3112516e399f9d1..073077529845c355a261c11f5f2022ea32e874ae 100644
--- a/Wrap/Swig/libBornAgainSample.i
+++ b/Wrap/Swig/libBornAgainSample.i
@@ -81,7 +81,7 @@
 #include "Sample/Lattice/BakeLattice.h"
 #include "Sample/Lattice/ISelectionRule.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
-#include "Sample/Material/WavevectorInfo.h"
+#include "Base/Vector/WavevectorInfo.h"
 #include "Sample/Multilayer/Layer.h"
 #include "Sample/Multilayer/MultiLayer.h"
 #include "Sample/Particle/Crystal.h"
@@ -130,7 +130,7 @@
 
 %include "Sample/Material/Material.h"
 %include "Sample/Material/MaterialFactoryFuncs.h"
-%include "Sample/Material/WavevectorInfo.h"
+%include "Base/Vector/WavevectorInfo.h"
 
 %include "Base/Vector/Transform3D.h"
 %include "Sample/Scattering/ISampleNode.h"