diff --git a/exercises/ex03_solution/trising_cpp/Makefile b/exercises/ex03_solution/trising_cpp/Makefile
index e185a516ebe196b58364364c6c0f1253fd332cb4..388677d7f96084bc34a0d3dd20714fee9fb242de 100644
--- a/exercises/ex03_solution/trising_cpp/Makefile
+++ b/exercises/ex03_solution/trising_cpp/Makefile
@@ -8,3 +8,5 @@ magnetization.txt: trFieldIsingTimeEvolution.x
 trFieldIsingTimeEvolution.x: trFieldIsingTimeEvolution.cpp
 	g++ -O2 -o trFieldIsingTimeEvolution.x trFieldIsingTimeEvolution.cpp
 
+clean:
+	rm -f magnetization.png magnetization.txt trFieldIsingTimeEvolution.x
diff --git a/exercises/ex03_solution/trising_cpp/trFieldIsingTimeEvolution.cpp b/exercises/ex03_solution/trising_cpp/trFieldIsingTimeEvolution.cpp
index e34750ce94c8808b0a5ef1da2abe01c996bf1c96..6b4360cda38c655549b0c5697357a418ffa26d2d 100644
--- a/exercises/ex03_solution/trising_cpp/trFieldIsingTimeEvolution.cpp
+++ b/exercises/ex03_solution/trising_cpp/trFieldIsingTimeEvolution.cpp
@@ -32,7 +32,7 @@ param_vector_t precomputeCosines(const param_vector_t &hx, double dt){
     for(int r = 0; r<hx.size(); ++r){
         res[r] = std::cos(dt*hx[r]);
     }
-    
+
     return res;
 }
 
@@ -42,7 +42,7 @@ Vector precomputeSines(const param_vector_t &hx, double dt){
     for(int r = 0; r<hx.size(); ++r){
         res[r] = I * std::sin(dt*hx[r]);
     }
-    
+
     return res;
 }
 
@@ -57,7 +57,7 @@ void tstep_diag(unsigned l, const param_vector_t &j, double dt, Vector& x)
       for( int r = 0; r < l - 1; ++r )
         {
             jtotal +=  ((s >> r)^(s >> (r+1)))&1 ? -j[r] : j[r]; // check if spins are parallel at site r and r+1
-        }        
+        }
       x[s] *= std::exp(I*jtotal*dt);
     }
 }
@@ -80,7 +80,7 @@ void evolve(unsigned l, const param_vector_t &j, const param_vector_t &hx, doubl
 
 template <class Vector>
 void printMagnetization(unsigned l, const Vector& v, std::ostream& outputStream)
-{    
+{
   state_t dim = 1 << l;
   for(int r=0; r<l; r++){
     double m(0);
@@ -107,14 +107,14 @@ int main(){
   // Starting configuration
   state_t initialInd = 1<<5;
   state_vector_t x(0., 1 << l);
-  x[initialInd] = 1;   
+  x[initialInd] = 1;
   printMagnetization(l,x,std::cout);
 
   // Do time evolution
-  for(int n=1; n<=nmeas; ++n){    
+  for(int n=1; n<=nmeas; ++n){
     evolve(l, j, hx, dt, nstep, x);
-    printMagnetization(l,x,std::cout);    
+    printMagnetization(l,x,std::cout);
   }
-  
+
   return 0;
 }
diff --git a/exercises/ex04_solution/heised_cpp/heised.cpp b/exercises/ex04_solution/heised_cpp/heised.cpp
index cdea1fe1fd9e77812356729e0fff0c0d8bbaffd4..aafd46fd268bf95a45bfd357f5bad03e707eb046 100644
--- a/exercises/ex04_solution/heised_cpp/heised.cpp
+++ b/exercises/ex04_solution/heised_cpp/heised.cpp
@@ -21,8 +21,9 @@ class SpinHalfBasis
 {
 public:
     enum { NOT_FOUND=-1 };
-    typedef unsigned State;
-    typedef unsigned Index;
+    typedef unsigned int State;
+    //~ typedef unsigned int Index; // C++ 98/03
+    using Index = unsigned int; // C++ 11/14/17/...
 
     SpinHalfBasis(unsigned l, unsigned nups);