diff --git a/CHANGELOG.md b/CHANGELOG.md
index 86c212e330bb8d5c80e7298a58d8d8a7192e923d..4caa742938733ba61e13228e792cba44dd6bb453 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,7 @@ v5.0.0
 - Significant overhaul of CMake infrastructure (!770, !804)
 - Fix ThridpartyCCM options (!802)
 - Fix Windows CRLF tokens in GEO reader and improve comment handling (!805)
+- Use chrono in Timer (!807)
 
 **NekMesh**:
 - Add feature to read basic 2D geo files as CAD (!731)
diff --git a/cmake/ThirdPartyBoost.cmake b/cmake/ThirdPartyBoost.cmake
index b48795ab402d3e22a3618c58a01a55bed280360a..98b2b9bcbe5b6e048d6c5d6be27de471dfae78be 100644
--- a/cmake/ThirdPartyBoost.cmake
+++ b/cmake/ThirdPartyBoost.cmake
@@ -10,7 +10,7 @@
 MESSAGE(STATUS "Searching for Boost:")
 SET(MIN_VER "1.56.0")
 SET(NEEDED_BOOST_LIBS thread iostreams date_time filesystem system
-    program_options regex timer chrono)
+    program_options regex)
 SET(Boost_DEBUG 0)
 SET(Boost_NO_BOOST_CMAKE ON)
 IF( BOOST_ROOT )
diff --git a/library/Collections/CollectionOptimisation.cpp b/library/Collections/CollectionOptimisation.cpp
index ac2637685a586671d5efaf5c1392ffaba0bbb8b6..53f9930b6fe0aacfa96c74e003f6e06f87f177ea 100644
--- a/library/Collections/CollectionOptimisation.cpp
+++ b/library/Collections/CollectionOptimisation.cpp
@@ -347,7 +347,7 @@ OperatorImpMap CollectionOptimisation::SetWithTimings(
     Array<OneD, NekDouble> outarray2(maxsize);
     Array<OneD, NekDouble> outarray3(maxsize);
 
-    Timer t;
+    LibUtilities::Timer t;
 
     if(verbose)
     {
diff --git a/library/Demos/Collections/CollectionTiming.cpp b/library/Demos/Collections/CollectionTiming.cpp
index 3877041bf08824ce9149241f55b61912c40cf4e7..4a1a4b2a5870d899140583ab185288be5775cda8 100644
--- a/library/Demos/Collections/CollectionTiming.cpp
+++ b/library/Demos/Collections/CollectionTiming.cpp
@@ -37,10 +37,9 @@
 #include <cstdlib>
 #include <iomanip>
 
-#include <boost/timer/timer.hpp>
-
 #include <LibUtilities/Memory/NekMemoryManager.hpp>
 #include <LibUtilities/BasicUtils/SessionReader.h>
+#include <LibUtilities/BasicUtils/Timer.h>
 #include <LibUtilities/Communication/Comm.h>
 #include <MultiRegions/ExpList3D.h>
 #include <Collections/Collection.h>
@@ -49,11 +48,6 @@
 using namespace std;
 using namespace Nektar;
 
-using boost::timer::cpu_timer;
-using boost::timer::cpu_times;
-using boost::timer::nanosecond_type;
-using boost::timer::format;
-
 MultiRegions::ExpListSharedPtr SetupExpList(
     int                                  N,
     LibUtilities::SessionReaderSharedPtr session,
@@ -71,33 +65,21 @@ MultiRegions::ExpListSharedPtr SetupExpList(
     return expList;
 }
 
-void printOutput(int N, int Ntest, cpu_timer &timer, bool fmt)
+void printOutput(int N, int Ntest, LibUtilities::Timer &timer, bool fmt)
 {
-    cpu_times times = timer.elapsed();
-    nanosecond_type total = times.user + times.system;
-
-    const double sec = 1000000000.0L;
-
-    // Normalize timings
-    double wall_sec  = times.wall / sec;
-    double total_sec = total / sec;
-
-    wall_sec /= Ntest;
-    total_sec /= Ntest;
+    // Get timings
+    NekDouble total_sec = timer.TimePerTest(Ntest);
 
     if (fmt)
     {
         cout << setw(6)  << N-1
-             << setw(18) << wall_sec
              << setw(18) << total_sec
              << endl;
     }
     else
     {
         cout << "P = " << N-1 << ": "
-             << wall_sec << " (wall) "
-             << total_sec << " (total), "
-             << (100.0 * total_sec / wall_sec) << "% CPU"
+             << total_sec << " s, "
              << endl;
     }
 }
@@ -113,7 +95,7 @@ int main(int argc, char *argv[])
 
     MultiRegions::ExpListSharedPtr expList;
 
-    cpu_timer timer;
+    LibUtilities::Timer timer;
 
     int Ntest, maxOrder;
     session->LoadParameter("Ntest",    Ntest,    1000);
@@ -141,12 +123,12 @@ int main(int argc, char *argv[])
             Array<OneD, NekDouble> input (expList->GetNcoeffs());
             Array<OneD, NekDouble> output(expList->GetNpoints());
 
-            timer.start();
+            timer.Start();
             for (int i = 0; i < Ntest; ++i)
             {
                 expList->BwdTrans(input, output);
             }
-            timer.stop();
+            timer.Stop();
 
             printOutput(N, Ntest, timer, fmt);
         }
@@ -158,12 +140,12 @@ int main(int argc, char *argv[])
             Array<OneD, NekDouble> input (expList->GetNpoints());
             Array<OneD, NekDouble> output(expList->GetNcoeffs());
 
-            timer.start();
+            timer.Start();
             for (int i = 0; i < Ntest; ++i)
             {
                 expList->IProductWRTBase(input, output);
             }
-            timer.stop();
+            timer.Stop();
 
             printOutput(N, Ntest, timer, fmt);
         }
@@ -181,12 +163,12 @@ int main(int argc, char *argv[])
                 input[i] = Array<OneD, NekDouble>(expList->GetNpoints());
             }
 
-            timer.start();
+            timer.Start();
             for (int i = 0; i < Ntest; ++i)
             {
                 expList->IProductWRTDerivBase(input, output);
             }
-            timer.stop();
+            timer.Stop();
 
             printOutput(N, Ntest, timer, fmt);
         }
@@ -200,12 +182,12 @@ int main(int argc, char *argv[])
             Array<OneD, NekDouble> output1(expList->GetNpoints());
             Array<OneD, NekDouble> output2(expList->GetNpoints());
 
-            timer.start();
+            timer.Start();
             for (int i = 0; i < Ntest; ++i)
             {
                 expList->PhysDeriv(input, output0, output1, output2);
             }
-            timer.stop();
+            timer.Stop();
 
             printOutput(N, Ntest, timer, fmt);
         }
diff --git a/library/FieldUtils/InputModules/InputXml.cpp b/library/FieldUtils/InputModules/InputXml.cpp
index 974cece54056e9b6fa69663ae27dd6e39f76e2b0..35e86446dc62aa22d166cee506a7df2b2d250061 100644
--- a/library/FieldUtils/InputModules/InputXml.cpp
+++ b/library/FieldUtils/InputModules/InputXml.cpp
@@ -77,7 +77,7 @@ InputXml::~InputXml()
  */
 void InputXml::Process(po::variables_map &vm)
 {
-    Timer timerpart;
+    LibUtilities::Timer timerpart;
     if (m_f->m_verbose)
     {
         if (m_f->m_comm->TreatAsRankZero())
diff --git a/library/FieldUtils/Module.h b/library/FieldUtils/Module.h
index da8399e0bc710ca27ea0664dddbf60434a14afca..3249cf9b00cca511a00e45e6c713c001ccc2ec3c 100644
--- a/library/FieldUtils/Module.h
+++ b/library/FieldUtils/Module.h
@@ -45,7 +45,6 @@
 #include <vector>
 
 #include <LibUtilities/BasicUtils/NekFactory.hpp>
-#include <LibUtilities/BasicUtils/Timer.h>
 #include <LibUtilities/Communication/CommSerial.h>
 #include <StdRegions/StdNodalTriExp.h>
 
diff --git a/library/FieldUtils/ProcessModules/ProcessCreateExp.cpp b/library/FieldUtils/ProcessModules/ProcessCreateExp.cpp
index 14c8c667e1cada261cb2efe1d6663358467ac93c..7750b2932f7e332703e46340c4eae22e34492d2c 100644
--- a/library/FieldUtils/ProcessModules/ProcessCreateExp.cpp
+++ b/library/FieldUtils/ProcessModules/ProcessCreateExp.cpp
@@ -67,7 +67,7 @@ void ProcessCreateExp::Process(po::variables_map &vm)
     if(m_f->m_graph)
     {
         int i, j;
-        Timer timerpart;
+        LibUtilities::Timer timerpart;
         if (m_f->m_verbose)
         {
             if (m_f->m_comm->TreatAsRankZero())
diff --git a/library/FieldUtils/ProcessModules/ProcessIsoContour.cpp b/library/FieldUtils/ProcessModules/ProcessIsoContour.cpp
index 7cc0d4a57a6a030ec427de275102d868ac35e23e..4433ad707e9de154edb8c852c37a88fbd64fdb69 100644
--- a/library/FieldUtils/ProcessModules/ProcessIsoContour.cpp
+++ b/library/FieldUtils/ProcessModules/ProcessIsoContour.cpp
@@ -43,6 +43,7 @@
 #include "ProcessIsoContour.h"
 
 #include <LibUtilities/BasicUtils/SharedArray.hpp>
+#include <LibUtilities/BasicUtils/Timer.h>
 #include <LibUtilities/BasicUtils/ParseUtils.hpp>
 #include <LibUtilities/BasicUtils/Progressbar.hpp>
 #include <boost/math/special_functions/fpclassify.hpp>
@@ -217,7 +218,7 @@ void ProcessIsoContour::Process(po::variables_map &vm)
 
     if(smoothing)
     {
-        Timer timersm;
+        LibUtilities::Timer timersm;
 
         if(verbose)
         {
diff --git a/library/LibUtilities/BasicUtils/Timer.cpp b/library/LibUtilities/BasicUtils/Timer.cpp
index 5aa52f5af1e324172752fbf30ce4bc449339387d..221ea41041a55dfce59f25aa8e0fc2f10f1f8c40 100644
--- a/library/LibUtilities/BasicUtils/Timer.cpp
+++ b/library/LibUtilities/BasicUtils/Timer.cpp
@@ -37,91 +37,28 @@
 
 namespace Nektar
 {
-    Timer::Timer() :
-        m_start(),
-        m_end(),
-        m_resolution()
-    {
-    }
-
-    Timer::~Timer()
-    {
-    }
-
-    void Timer::Start()
-    {
-        #ifdef _WIN32
-            QueryPerformanceCounter(&m_start);
-        #elif defined(__APPLE__)
-            gettimeofday(&m_start, 0);
-        #else 
-            clock_gettime(CLOCK_REALTIME, &m_start);
-        #endif
-    }
-
-    void Timer::Stop()
-    {
-        #ifdef _WIN32
-            QueryPerformanceCounter(&m_end);
-        #elif defined(__APPLE__)
-            gettimeofday(&m_end, 0);
-        #else 
-            clock_gettime(CLOCK_REALTIME, &m_end);
-        #endif
-    }
+namespace LibUtilities
+{
 
-    Timer::CounterType Timer::Elapsed()
-    {
-        #ifdef _WIN32
-            CounterType result;
-            result.QuadPart = m_end.QuadPart - m_start.QuadPart;
-            return result;
-        #elif defined(__APPLE__)
-            CounterType result = m_end;
-            
-            if( result.tv_usec < m_start.tv_usec) 
-            {
-                result.tv_sec -= 1;
-                result.tv_usec += 1000000;
-            }
-            
-            result.tv_sec -= m_start.tv_sec;
-            result.tv_usec -= m_start.tv_usec;
-            
-            return result;
-        #else
-            CounterType result = m_end;
+void Timer::Start()
+{
+    m_start = Clock::now();
+}
 
-            if( result.tv_nsec < m_start.tv_nsec) 
-            {
-                result.tv_sec -= 1;
-                result.tv_nsec += 1000000000;
-            }
-            
-            result.tv_sec -= m_start.tv_sec;
-            result.tv_nsec -= m_start.tv_nsec;
+void Timer::Stop()
+{
+    m_end = Clock::now();
+}
 
-            return result;
-        #endif
-    }
+Timer::Seconds Timer::Elapsed()
+{
+    return std::chrono::duration_cast<Seconds>(m_end - m_start);
+}
 
-    NekDouble Timer::TimePerTest(unsigned int n)
-    {
-        #ifdef _WIN32
-            CounterType frequency;
-            QueryPerformanceFrequency(&frequency);
-            return Elapsed().QuadPart/static_cast<NekDouble>(n) * 1.0/frequency.QuadPart;
-        #elif defined(__APPLE__)
-            CounterType elapsed = Elapsed();
-            NekDouble result = elapsed.tv_sec/static_cast<NekDouble>(n) +
-                ( elapsed.tv_usec/static_cast<NekDouble>(n) * 1.0e-6);
-            return result;
-        #else
-            CounterType elapsed = Elapsed();
-            NekDouble result = elapsed.tv_sec/static_cast<NekDouble>(n) +
-                ( elapsed.tv_nsec/static_cast<NekDouble>(n) * 1.0e-9);
-            return result;
-        #endif
-    }
+NekDouble Timer::TimePerTest(unsigned int n)
+{
+    return Elapsed().count() / static_cast<NekDouble>(n);
+}
 
-}     
+}
+}
diff --git a/library/LibUtilities/BasicUtils/Timer.h b/library/LibUtilities/BasicUtils/Timer.h
index 8991ab0126d410ed8bfcb3686a7d5546c02978e9..d7c5984b238051fe16265dac8a16ff04dbbb2f51 100644
--- a/library/LibUtilities/BasicUtils/Timer.h
+++ b/library/LibUtilities/BasicUtils/Timer.h
@@ -37,50 +37,44 @@
 #ifndef NEKTAR_LIB_UTILITIES_BASIC_UTILS_TIMER_H
 #define NEKTAR_LIB_UTILITIES_BASIC_UTILS_TIMER_H
 
-#ifdef _WIN32
-#define NOMINMAX
-#include <windows.h>
-#else
-#include <sys/time.h>
-#include <time.h>
-#endif
+#include <chrono>
 
 #include <LibUtilities/LibUtilitiesDeclspec.h>
 #include <LibUtilities/BasicConst/NektarUnivConsts.hpp>
 
 namespace Nektar
 {
-    class Timer
-    {    
-        public:
-            #ifdef _WIN32
-                typedef LARGE_INTEGER CounterType;
-            #elif  defined(__APPLE__)
-                typedef timeval CounterType;
-            #else
-                typedef timespec CounterType;
-            #endif
+namespace LibUtilities
+{
+
+class Timer
+{
+    public:
+        using Clock       = std::chrono::steady_clock;
+        using CounterType = Clock::time_point;
+        using Seconds     = std::chrono::duration<NekDouble>;
 
-        public:
-            LIB_UTILITIES_EXPORT Timer();
-            LIB_UTILITIES_EXPORT ~Timer();
+    public:
+        LIB_UTILITIES_EXPORT Timer()  = default;
+        LIB_UTILITIES_EXPORT ~Timer() = default;
 
-            LIB_UTILITIES_EXPORT void Start();
-            LIB_UTILITIES_EXPORT void Stop();
-            LIB_UTILITIES_EXPORT CounterType Elapsed();
+        Timer(const Timer& rhs)            = delete;
+        Timer& operator=(const Timer& rhs) = delete;
 
-            /// \brief Returns amount of seconds per iteration in
-            ///        a test with n iterations.
-            LIB_UTILITIES_EXPORT NekDouble TimePerTest(unsigned int n);
+        LIB_UTILITIES_EXPORT void Start();
+        LIB_UTILITIES_EXPORT void Stop();
+        LIB_UTILITIES_EXPORT Seconds Elapsed();
 
-        private:
-            Timer(const Timer& rhs);
-            Timer& operator=(const Timer& rhs);
+        /// \brief Returns amount of seconds per iteration in
+        ///        a test with n iterations.
+        LIB_UTILITIES_EXPORT NekDouble TimePerTest(unsigned int n);
 
-            CounterType m_start;
-            CounterType m_end;
-            CounterType m_resolution;
-    };
+    private:
+        CounterType m_start;
+        CounterType m_end;
+};
+
+}
 }
 
 #endif //NEKTAR_LIB_UTILITIES_BASIC_UTILS_TIMER_H
diff --git a/library/MultiRegions/GlobalLinSysIterativeStaticCond.cpp b/library/MultiRegions/GlobalLinSysIterativeStaticCond.cpp
index d2a77f29ee7d3d91cd9c2997bcb3506a68a7d2ad..56b5a4bfeff11273dea6fb7d8d98448beeca10de 100644
--- a/library/MultiRegions/GlobalLinSysIterativeStaticCond.cpp
+++ b/library/MultiRegions/GlobalLinSysIterativeStaticCond.cpp
@@ -35,7 +35,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include <MultiRegions/GlobalLinSysIterativeStaticCond.h>
-#include <LibUtilities/BasicUtils/Timer.h>
 #include <LibUtilities/BasicUtils/ErrorUtil.hpp>
 #include <LibUtilities/LinearAlgebra/StorageSmvBsr.hpp>
 #include <LibUtilities/LinearAlgebra/SparseDiagBlkMatrix.hpp>
diff --git a/library/MultiRegions/GlobalLinSysStaticCond.cpp b/library/MultiRegions/GlobalLinSysStaticCond.cpp
index 223234bef38382693aa3d7bf909d458b502a2227..77eb00e210ac45da687fbdb7c4c782bbdda37481 100644
--- a/library/MultiRegions/GlobalLinSysStaticCond.cpp
+++ b/library/MultiRegions/GlobalLinSysStaticCond.cpp
@@ -35,7 +35,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include <MultiRegions/GlobalLinSysStaticCond.h>
-#include <LibUtilities/BasicUtils/Timer.h>
 #include <LibUtilities/BasicUtils/ErrorUtil.hpp>
 #include <LibUtilities/LinearAlgebra/StorageSmvBsr.hpp>
 #include <LibUtilities/LinearAlgebra/SparseDiagBlkMatrix.hpp>
diff --git a/library/MultiRegions/GlobalLinSysXxtStaticCond.cpp b/library/MultiRegions/GlobalLinSysXxtStaticCond.cpp
index cc05ac96c04358b7c8b5e8e898300367023d24ad..9d95e16cd512c5f1b392ab7185b6784cb56850d7 100644
--- a/library/MultiRegions/GlobalLinSysXxtStaticCond.cpp
+++ b/library/MultiRegions/GlobalLinSysXxtStaticCond.cpp
@@ -36,7 +36,6 @@
 #include <LibUtilities/Communication/Xxt.hpp>
 #include <LibUtilities/BasicUtils/VDmathArray.hpp>
 #include <MultiRegions/GlobalLinSysXxtStaticCond.h>
-#include <LibUtilities/BasicUtils/Timer.h>
 
 using namespace std;
 
diff --git a/library/SolverUtils/DriverSteadyState.h b/library/SolverUtils/DriverSteadyState.h
index 99df4bd807b89a84453590e2851ee61c540036eb..2abfdca4f2de6250b81ab65adc1b20912b8f3591 100644
--- a/library/SolverUtils/DriverSteadyState.h
+++ b/library/SolverUtils/DriverSteadyState.h
@@ -126,7 +126,7 @@ private:
     int m_checksteps;
     int NumVar_SFD;
 
-    Timer     timer;
+    LibUtilities::Timer     timer;
     NekDouble cpuTime;
     NekDouble totalTime;
     NekDouble elapsed;
diff --git a/library/SolverUtils/UnsteadySystem.cpp b/library/SolverUtils/UnsteadySystem.cpp
index 63a0b19fcb00ab76cfd114a4e8cb0ab392ec3955..d0551f41760f2e39ca0344b557e0da15fb0adea5 100644
--- a/library/SolverUtils/UnsteadySystem.cpp
+++ b/library/SolverUtils/UnsteadySystem.cpp
@@ -249,7 +249,7 @@ namespace Nektar
                      "Only one of IO_CheckTime and IO_CheckSteps "
                      "should be set!");
 
-            Timer     timer;
+            LibUtilities::Timer     timer;
             bool      doCheckTime   = false;
             int       step          = m_initialStep;
             NekDouble intTime       = 0.0;
diff --git a/library/Timings/TimingCGHelmSolve2D.cpp b/library/Timings/TimingCGHelmSolve2D.cpp
index 7889c44450f68f09bf374fa9bf6b5de3ae4e5d92..f274af9e478e4f4017d23b5a194d66e0a611a54f 100644
--- a/library/Timings/TimingCGHelmSolve2D.cpp
+++ b/library/Timings/TimingCGHelmSolve2D.cpp
@@ -20,7 +20,7 @@ int main(int argc, char *argv[])
     NekDouble  lambda;
     vector<string> vFilenames;
     //defining timing variables
-    Timer timer;
+    LibUtilities::Timer timer;
     NekDouble exeTime, fullTime, ppTime = 0.0;
 
     if(argc < 6)//< allows to parse "verbose" option
diff --git a/library/Timings/TimingCGHelmSolve3D.cpp b/library/Timings/TimingCGHelmSolve3D.cpp
index 188179e7b9c4757f1eb4162a35be91a0b5597785..a548aafc1e1efa685f195136604af8b6abb5641c 100644
--- a/library/Timings/TimingCGHelmSolve3D.cpp
+++ b/library/Timings/TimingCGHelmSolve3D.cpp
@@ -20,7 +20,7 @@ int main(int argc, char *argv[])
     NekDouble  lambda;
     vector<string> vFilenames;
     //defining timing variables
-    Timer timer;
+    LibUtilities::Timer timer;
     NekDouble exeTime, fullTime, ppTime = 0.0;
 
     if(argc < 6)//< is added to be able to submit "verbose" option
diff --git a/library/Timings/TimingHDGHelmSolve2D.cpp b/library/Timings/TimingHDGHelmSolve2D.cpp
index 4f2e52bde1ca143d22be673dffa67903e17f3fb3..ae85bdc55e7c0cd7ee6d41b17d8b050af79887b1 100644
--- a/library/Timings/TimingHDGHelmSolve2D.cpp
+++ b/library/Timings/TimingHDGHelmSolve2D.cpp
@@ -20,7 +20,7 @@ int main(int argc, char *argv[])
     NekDouble  lambda;
     vector<string> vFilenames;
     //defining timing variables
-    Timer timer;
+    LibUtilities::Timer timer;
     NekDouble exeTime, fullTime, ppTime;
 
     if(argc < 6)//< allows to parse "verbose" option
diff --git a/library/Timings/TimingHDGHelmSolve3D.cpp b/library/Timings/TimingHDGHelmSolve3D.cpp
index 6df21967f83f77f7e6f75044b1f14a513fde6c08..eab55cc701660c7156ba782290ca73cd5a4d4e44 100644
--- a/library/Timings/TimingHDGHelmSolve3D.cpp
+++ b/library/Timings/TimingHDGHelmSolve3D.cpp
@@ -20,7 +20,7 @@ int main(int argc, char *argv[])
     NekDouble  lambda;
     vector<string> vFilenames;
     //defining timing variables
-    Timer timer;
+    LibUtilities::Timer timer;
     NekDouble exeTime, fullTime, ppTime;
 
     if(argc < 6)//< is used to be able to submit "verbose" option
diff --git a/solvers/IncNavierStokesSolver/EquationSystems/CoupledLinearNS.cpp b/solvers/IncNavierStokesSolver/EquationSystems/CoupledLinearNS.cpp
index ed46541eafd7e705b3f380a20f4f2d64800bf68f..50c241722f3a4c255eb843df98b8952e10d91d1c 100644
--- a/solvers/IncNavierStokesSolver/EquationSystems/CoupledLinearNS.cpp
+++ b/solvers/IncNavierStokesSolver/EquationSystems/CoupledLinearNS.cpp
@@ -455,7 +455,7 @@ namespace Nektar
         ::AllocateSharedPtr(nsize_p_m1,nsize_p_m1,blkmatStorage);
         
         
-        Timer timer;
+        LibUtilities::Timer timer;
         timer.Start();
         for(n = 0; n < nel; ++n)
         {
@@ -1445,7 +1445,7 @@ namespace Nektar
             }
             case eSteadyNavierStokes:
             {	
-                Timer Generaltimer;
+                LibUtilities::Timer Generaltimer;
                 Generaltimer.Start();
                 
                 int Check(0);
@@ -1562,7 +1562,7 @@ namespace Nektar
     
     void CoupledLinearNS::SolveSteadyNavierStokes(void)
     {
-        Timer Newtontimer;
+        LibUtilities::Timer Newtontimer;
         Newtontimer.Start();
         
         Array<OneD, Array<OneD, NekDouble> > RHS_Coeffs(m_velocity.num_elements());
diff --git a/solvers/PulseWaveSolver/EquationSystems/PulseWaveSystem.cpp b/solvers/PulseWaveSolver/EquationSystems/PulseWaveSystem.cpp
index 770c6aa800a8835dd7356f02874b109827ce014d..b641aba351b265bc4e746353cc0825e49e6479ec 100755
--- a/solvers/PulseWaveSolver/EquationSystems/PulseWaveSystem.cpp
+++ b/solvers/PulseWaveSolver/EquationSystems/PulseWaveSystem.cpp
@@ -489,7 +489,7 @@ namespace Nektar
         // Time loop
         for(n = 0; n < m_steps; ++n)
         {				
-            Timer timer;
+            LibUtilities::Timer timer;
             timer.Start();
             fields = m_intScheme->TimeIntegrate(n,m_timestep,m_intSoln,m_ode);
             //cout<<"integration: "<<fields[0][fields[0].num_elements()-1]<<endl;                
diff --git a/utilities/FieldConvert/FieldConvert.cpp b/utilities/FieldConvert/FieldConvert.cpp
index 55899a2f68a652f4adf68848781ea3b9d90d4296..d61957dac1b07d1adc8df093d84f3ef4bc9b8de9 100644
--- a/utilities/FieldConvert/FieldConvert.cpp
+++ b/utilities/FieldConvert/FieldConvert.cpp
@@ -36,6 +36,7 @@
 #include <string>
 #include <boost/algorithm/string.hpp>
 #include <boost/program_options.hpp>
+#include <LibUtilities/BasicUtils/Timer.h>
 #include <FieldUtils/Module.h>
 
 using namespace std;
@@ -50,7 +51,7 @@ void RunModule(ModuleSharedPtr module, po::variables_map &vm, bool verbose);
 
 int main(int argc, char* argv[])
 {
-    Timer     timer;
+    LibUtilities::Timer    timer;
     timer.Start();
 
     po::options_description desc("Available options");
@@ -649,7 +650,7 @@ void PrintExecutionSequence(vector<ModuleSharedPtr> &modules)
 
 void RunModule(ModuleSharedPtr module, po::variables_map &vm, bool verbose)
 {
-    Timer moduleTimer;
+    LibUtilities::Timer moduleTimer;
     if(verbose)
     {
         moduleTimer.Start();
diff --git a/utilities/NekMesh/ProcessModules/ProcessVarOpti/ProcessVarOpti.cpp b/utilities/NekMesh/ProcessModules/ProcessVarOpti/ProcessVarOpti.cpp
index 3fa776ffccef2a140ba6aef4c9114be957ac3b33..1ee6b1f1f51eeddd1548dc98b152dd32d44f7765 100644
--- a/utilities/NekMesh/ProcessModules/ProcessVarOpti/ProcessVarOpti.cpp
+++ b/utilities/NekMesh/ProcessModules/ProcessVarOpti/ProcessVarOpti.cpp
@@ -299,7 +299,7 @@ void ProcessVarOpti::Process()
     Thread::ThreadManagerSharedPtr tm =
         tms.CreateInstance(Thread::ThreadMaster::SessionJob, nThreads);
 
-    Timer t;
+    LibUtilities::Timer t;
     t.Start();
 
     ofstream resFile;