From 19c74b1e8ed7f1e69b75b2efeb771ea46db3c734 Mon Sep 17 00:00:00 2001
From: Giovanni Bussi <giovanni.bussi@gmail.com>
Date: Wed, 1 Jul 2015 20:12:59 +0200
Subject: [PATCH] Added explicit to all constructors

---
 src/analysis/Analysis.h                       |  2 +-
 src/analysis/AnalysisWithLandmarks.h          |  2 +-
 .../ClassicalMultiDimensionalScaling.cpp      |  2 +-
 src/analysis/Commit.cpp                       |  2 +-
 src/analysis/Histogram.cpp                    |  2 +-
 src/analysis/LandmarkSelectionBase.h          |  2 +-
 src/analysis/SelectAllFrames.cpp              |  2 +-
 src/bias/ABMD.cpp                             |  2 +-
 src/bias/Bias.h                               |  2 +-
 src/bias/BiasValue.cpp                        |  2 +-
 src/bias/ExtendedLagrangian.cpp               |  2 +-
 src/bias/External.cpp                         |  2 +-
 src/bias/LWalls.cpp                           |  2 +-
 src/bias/MetaD.cpp                            |  2 +-
 src/bias/MovingRestraint.cpp                  |  2 +-
 src/bias/Restraint.cpp                        |  2 +-
 src/bias/UWalls.cpp                           |  2 +-
 src/cltools/Driver.cpp                        |  2 +-
 src/cltools/GenTemplate.cpp                   |  2 +-
 src/cltools/Info.cpp                          |  2 +-
 src/cltools/Manual.cpp                        |  2 +-
 src/cltools/SimpleMD.cpp                      |  2 +-
 src/cltools/SumHills.cpp                      |  2 +-
 src/cltools/kT.cpp                            |  2 +-
 src/colvar/Angle.cpp                          |  2 +-
 src/colvar/CH3Shifts.cpp                      |  2 +-
 src/colvar/CS2Backbone.cpp                    |  2 +-
 src/colvar/Cell.cpp                           |  2 +-
 src/colvar/Constant.cpp                       |  2 +-
 src/colvar/ContactMap.cpp                     |  2 +-
 src/colvar/Coordination.cpp                   |  2 +-
 src/colvar/CoordinationBase.h                 |  2 +-
 src/colvar/DHEnergy.cpp                       |  2 +-
 src/colvar/DRMSD.cpp                          |  2 +-
 src/colvar/Dipole.cpp                         |  2 +-
 src/colvar/Distance.cpp                       |  2 +-
 src/colvar/Energy.cpp                         |  2 +-
 src/colvar/Fake.cpp                           |  2 +-
 src/colvar/Gyration.cpp                       |  2 +-
 src/colvar/MultiRMSD.cpp                      |  2 +-
 src/colvar/NOE.cpp                            |  2 +-
 src/colvar/PCARMSD.cpp                        |  2 +-
 src/colvar/PathMSD.cpp                        |  2 +-
 src/colvar/PathMSDBase.h                      |  2 +-
 src/colvar/Position.cpp                       |  2 +-
 src/colvar/PropertyMap.cpp                    |  2 +-
 src/colvar/Puckering.cpp                      |  2 +-
 src/colvar/RDC.cpp                            |  2 +-
 src/colvar/RMSD.cpp                           |  2 +-
 src/colvar/Template.cpp                       |  2 +-
 src/colvar/Torsion.cpp                        |  2 +-
 src/colvar/Volume.cpp                         |  2 +-
 src/core/Action.h                             |  4 +--
 src/core/ActionAtomistic.h                    |  2 +-
 src/core/ActionPilot.h                        |  2 +-
 src/core/ActionSet.h                          |  2 +-
 src/core/ActionSetup.h                        |  2 +-
 src/core/ActionWithArguments.h                |  2 +-
 src/core/ActionWithValue.h                    |  2 +-
 src/core/ActionWithVirtualAtom.h              |  2 +-
 src/core/Atoms.h                              |  2 +-
 src/core/CLTool.h                             |  4 +--
 src/core/CLToolMain.cpp                       |  4 +--
 src/core/Colvar.h                             |  2 +-
 src/core/GREX.h                               |  2 +-
 src/core/SetupMolInfo.h                       |  2 +-
 src/core/TargetDist.h                         |  2 +-
 src/crystallization/DFSBasic.cpp              |  2 +-
 src/crystallization/DFSClusterRadius.cpp      |  2 +-
 src/crystallization/DFSClustering.h           |  2 +-
 src/crystallization/DFSMaxSize.cpp            |  2 +-
 src/crystallization/DFSNumberOfClusters.cpp   |  2 +-
 src/crystallization/Fccubic.cpp               |  2 +-
 src/crystallization/Gradient.h                |  2 +-
 src/crystallization/GradientVessel.cpp        |  2 +-
 src/crystallization/LocalSteinhardt.h         |  2 +-
 src/crystallization/MoleculeOrientation.cpp   |  2 +-
 src/crystallization/MoleculePlane.cpp         |  2 +-
 src/crystallization/OrientationSphere.h       |  2 +-
 src/crystallization/Q3.cpp                    |  2 +-
 src/crystallization/Q4.cpp                    |  2 +-
 src/crystallization/Q6.cpp                    |  2 +-
 src/crystallization/SMAC.cpp                  |  2 +-
 src/crystallization/SimpleCubic.cpp           |  2 +-
 src/crystallization/Steinhardt.h              |  2 +-
 src/crystallization/Tetrahedral.cpp           |  2 +-
 src/crystallization/VectorMean.cpp            |  2 +-
 src/crystallization/VectorMultiColvar.h       |  2 +-
 src/crystallization/VectorSum.cpp             |  2 +-
 src/function/Combine.cpp                      |  2 +-
 src/function/Ensemble.cpp                     |  2 +-
 src/function/FuncPathMSD.cpp                  |  2 +-
 src/function/FuncSumHills.cpp                 |  2 +-
 src/function/Function.h                       |  2 +-
 src/function/Matheval.cpp                     |  2 +-
 src/function/Piecewise.cpp                    |  2 +-
 src/function/Sort.cpp                         |  2 +-
 src/function/Target.cpp                       |  2 +-
 src/generic/Debug.cpp                         |  2 +-
 src/generic/DumpAtoms.cpp                     |  2 +-
 src/generic/DumpDerivatives.cpp               |  2 +-
 src/generic/DumpForces.cpp                    |  2 +-
 src/generic/DumpMassCharge.cpp                |  2 +-
 src/generic/DumpProjections.cpp               |  2 +-
 src/generic/EffectiveEnergyDrift.cpp          |  2 +-
 src/generic/FitToTemplate.cpp                 |  2 +-
 src/generic/Flush.cpp                         |  2 +-
 src/generic/Group.cpp                         |  2 +-
 src/generic/Include.cpp                       |  2 +-
 src/generic/Print.cpp                         |  2 +-
 src/generic/RandomExchanges.cpp               |  2 +-
 src/generic/Read.cpp                          |  2 +-
 src/generic/Time.cpp                          |  2 +-
 src/generic/WholeMolecules.cpp                |  2 +-
 src/generic/WrapAround.cpp                    |  2 +-
 src/imd/ActionIMD.cpp                         |  2 +-
 src/manyrestraints/ManyRestraintsBase.h       |  2 +-
 src/manyrestraints/UWalls.cpp                 |  2 +-
 src/mapping/Mapping.h                         |  2 +-
 src/mapping/PCAVars.cpp                       |  2 +-
 src/mapping/Path.cpp                          |  2 +-
 src/mapping/PathBase.h                        |  2 +-
 src/mapping/PropertyMap.cpp                   |  2 +-
 src/mapping/SpathVessel.cpp                   |  2 +-
 src/mapping/ZpathVessel.cpp                   |  2 +-
 src/multicolvar/ActionVolume.h                |  2 +-
 src/multicolvar/AdjacencyMatrixAction.h       |  2 +-
 src/multicolvar/AdjacencyMatrixVessel.h       |  2 +-
 src/multicolvar/AlphaBeta.cpp                 |  2 +-
 src/multicolvar/Angles.cpp                    |  2 +-
 src/multicolvar/Bridge.cpp                    |  2 +-
 src/multicolvar/BridgedMultiColvarFunction.h  |  2 +-
 src/multicolvar/CoordinationNumbers.cpp       |  2 +-
 src/multicolvar/Density.cpp                   |  2 +-
 src/multicolvar/DihedralCorrelation.cpp       |  2 +-
 src/multicolvar/Distances.cpp                 |  2 +-
 src/multicolvar/DumpMultiColvar.cpp           |  2 +-
 src/multicolvar/FilterBetween.cpp             |  2 +-
 src/multicolvar/FilterLessThan.cpp            |  2 +-
 src/multicolvar/FilterMoreThan.cpp            |  2 +-
 src/multicolvar/InPlaneDistances.cpp          |  2 +-
 src/multicolvar/LocalAverage.cpp              |  2 +-
 src/multicolvar/MultiColvar.h                 |  2 +-
 src/multicolvar/MultiColvarBase.h             |  2 +-
 src/multicolvar/MultiColvarDensity.cpp        |  2 +-
 src/multicolvar/MultiColvarFilter.h           |  2 +-
 src/multicolvar/MultiColvarFunction.h         |  2 +-
 src/multicolvar/NumberOfLinks.cpp             |  2 +-
 src/multicolvar/Sprint.cpp                    |  2 +-
 src/multicolvar/Torsions.cpp                  |  2 +-
 src/multicolvar/VolumeAround.cpp              |  2 +-
 src/multicolvar/VolumeCavity.cpp              |  2 +-
 src/multicolvar/VolumeGradientBase.h          |  2 +-
 src/multicolvar/VolumeInCylinder.cpp          |  2 +-
 src/multicolvar/VolumeTetrapore.cpp           |  2 +-
 src/multicolvar/XDistances.cpp                |  2 +-
 src/multicolvar/XYDistances.cpp               |  2 +-
 src/reference/ArgumentOnlyDistance.h          |  2 +-
 src/reference/DRMSD.h                         |  2 +-
 src/reference/Direction.cpp                   |  2 +-
 src/reference/DotProductDistance.cpp          |  2 +-
 src/reference/EuclideanDistance.cpp           |  2 +-
 src/reference/FakeFrame.h                     |  2 +-
 src/reference/MahalanobisDistance.cpp         |  2 +-
 src/reference/MultiDomainRMSD.h               |  2 +-
 src/reference/NormalizedEuclideanDistance.cpp |  2 +-
 src/reference/OptimalRMSD.cpp                 |  2 +-
 src/reference/RMSDBase.h                      |  2 +-
 src/reference/ReferenceArguments.h            |  2 +-
 src/reference/ReferenceAtoms.h                |  2 +-
 src/reference/ReferenceConfiguration.h        |  4 +--
 src/reference/SimpleRMSD.cpp                  |  2 +-
 src/reference/SingleDomainRMSD.h              |  2 +-
 src/secondarystructure/AlphaRMSD.cpp          |  2 +-
 src/secondarystructure/AntibetaRMSD.cpp       |  2 +-
 src/secondarystructure/ParabetaRMSD.cpp       |  2 +-
 .../SecondaryStructureRMSD.h                  |  2 +-
 src/setup/Load.cpp                            |  2 +-
 src/setup/Restart.cpp                         |  2 +-
 src/setup/Units.cpp                           |  2 +-
 src/tools/AtomNumber.h                        |  4 ++-
 src/tools/Communicator.h                      | 34 +++++++++----------
 src/tools/Exception.h                         |  2 +-
 src/tools/FileBase.h                          |  2 +-
 src/tools/Grid.h                              |  4 +--
 src/tools/Keywords.h                          |  2 +-
 src/tools/LinkCells.h                         |  2 +-
 src/tools/Random.h                            |  2 +-
 src/vatom/COM.cpp                             |  2 +-
 src/vatom/Center.cpp                          |  2 +-
 src/vatom/Ghost.cpp                           |  2 +-
 src/vesselbase/ActionWithInputVessel.h        |  2 +-
 src/vesselbase/ActionWithVessel.h             |  2 +-
 src/vesselbase/AltMin.cpp                     |  2 +-
 src/vesselbase/Between.h                      |  2 +-
 src/vesselbase/BridgeVessel.h                 |  2 +-
 src/vesselbase/FunctionVessel.h               |  2 +-
 src/vesselbase/Highest.cpp                    |  2 +-
 src/vesselbase/Histogram.cpp                  |  2 +-
 src/vesselbase/LessThan.h                     |  2 +-
 src/vesselbase/Lowest.cpp                     |  2 +-
 src/vesselbase/Max.cpp                        |  2 +-
 src/vesselbase/Mean.cpp                       |  2 +-
 src/vesselbase/Min.cpp                        |  2 +-
 src/vesselbase/Moments.cpp                    |  2 +-
 src/vesselbase/MoreThan.cpp                   |  2 +-
 src/vesselbase/OrderingVessel.h               |  2 +-
 src/vesselbase/ShortcutVessel.h               |  2 +-
 src/vesselbase/StoreDataVessel.h              |  2 +-
 src/vesselbase/Sum.cpp                        |  2 +-
 src/vesselbase/ValueVessel.h                  |  2 +-
 src/vesselbase/Vessel.h                       |  2 +-
 src/wrapper/Plumed.h                          |  8 ++++-
 213 files changed, 242 insertions(+), 234 deletions(-)

diff --git a/src/analysis/Analysis.h b/src/analysis/Analysis.h
index 33a01f972..9044ac07f 100644
--- a/src/analysis/Analysis.h
+++ b/src/analysis/Analysis.h
@@ -134,7 +134,7 @@ protected:
   std::string getOutputFormat() const ;
 public:
   static void registerKeywords( Keywords& keys );
-  Analysis(const ActionOptions&);
+  explicit Analysis(const ActionOptions&);
   ~Analysis();
   void prepare();
   void calculate();
diff --git a/src/analysis/AnalysisWithLandmarks.h b/src/analysis/AnalysisWithLandmarks.h
index 86426fc79..aa361123c 100644
--- a/src/analysis/AnalysisWithLandmarks.h
+++ b/src/analysis/AnalysisWithLandmarks.h
@@ -47,7 +47,7 @@ protected:
   unsigned getNumberOfLandmarks() const ;
 public:
   static void registerKeywords( Keywords& keys );
-  AnalysisWithLandmarks( const ActionOptions& );
+  explicit AnalysisWithLandmarks( const ActionOptions& );
   ~AnalysisWithLandmarks();
 /// Do the analysis
   void performAnalysis();
diff --git a/src/analysis/ClassicalMultiDimensionalScaling.cpp b/src/analysis/ClassicalMultiDimensionalScaling.cpp
index f64e5211d..20e2451de 100644
--- a/src/analysis/ClassicalMultiDimensionalScaling.cpp
+++ b/src/analysis/ClassicalMultiDimensionalScaling.cpp
@@ -172,7 +172,7 @@ private:
   PointWiseMapping* myembedding;
 public:
   static void registerKeywords( Keywords& keys );
-  ClassicalMultiDimensionalScaling( const ActionOptions& ao );
+  explicit ClassicalMultiDimensionalScaling( const ActionOptions& ao );
   ~ClassicalMultiDimensionalScaling();
   void analyzeLandmarks();
 };
diff --git a/src/analysis/Commit.cpp b/src/analysis/Commit.cpp
index a164f4d90..8879bf5f1 100644
--- a/src/analysis/Commit.cpp
+++ b/src/analysis/Commit.cpp
@@ -65,7 +65,7 @@ private:
   std::vector<double> bmin, bmax;
 public:
   static void registerKeywords( Keywords& keys );
-  Committor(const ActionOptions&ao);
+  explicit Committor(const ActionOptions&ao);
   void calculate();
   void apply(){}
 };
diff --git a/src/analysis/Histogram.cpp b/src/analysis/Histogram.cpp
index 761d8a26a..befe10b72 100644
--- a/src/analysis/Histogram.cpp
+++ b/src/analysis/Histogram.cpp
@@ -122,7 +122,7 @@ private:
   bool unnormalized;
 public:
   static void registerKeywords( Keywords& keys );
-  Histogram(const ActionOptions&ao);
+  explicit Histogram(const ActionOptions&ao);
   void performAnalysis();
   void performTask( const unsigned& , const unsigned& , MultiValue& ) const ;
 };
diff --git a/src/analysis/LandmarkSelectionBase.h b/src/analysis/LandmarkSelectionBase.h
index 123dd14cf..4e12a403c 100644
--- a/src/analysis/LandmarkSelectionBase.h
+++ b/src/analysis/LandmarkSelectionBase.h
@@ -71,7 +71,7 @@ protected:
 /// Transfer frame i in the underlying action to the object we are going to analyze
   void selectFrame( const unsigned& , MultiReferenceBase* );
 public:
-  LandmarkSelectionBase( const LandmarkSelectionOptions& lo );
+  explicit LandmarkSelectionBase( const LandmarkSelectionOptions& lo );
   virtual ~LandmarkSelectionBase();
 /// Check everything was read in
   void checkRead() const ;
diff --git a/src/analysis/SelectAllFrames.cpp b/src/analysis/SelectAllFrames.cpp
index b0f751264..6e9101508 100644
--- a/src/analysis/SelectAllFrames.cpp
+++ b/src/analysis/SelectAllFrames.cpp
@@ -27,7 +27,7 @@ namespace analysis {
 
 class CopyAllFrames : public LandmarkSelectionBase {
 public:
-  CopyAllFrames( const LandmarkSelectionOptions& lo );
+  explicit CopyAllFrames( const LandmarkSelectionOptions& lo );
   void select( MultiReferenceBase* );
 };
 
diff --git a/src/bias/ABMD.cpp b/src/bias/ABMD.cpp
index b71f88a67..45a41f3c2 100644
--- a/src/bias/ABMD.cpp
+++ b/src/bias/ABMD.cpp
@@ -89,7 +89,7 @@ class ABMD : public Bias{
   std::vector<int> seed;
   vector<Random> random;
 public:
-  ABMD(const ActionOptions&);
+  explicit ABMD(const ActionOptions&);
   void calculate();
   static void registerKeywords(Keywords& keys);
 };
diff --git a/src/bias/Bias.h b/src/bias/Bias.h
index b7092b491..9e0ae8859 100644
--- a/src/bias/Bias.h
+++ b/src/bias/Bias.h
@@ -48,7 +48,7 @@ protected:
   void setOutputForce(int i,double g);
 public:
   static void registerKeywords(Keywords&);
-  Bias(const ActionOptions&ao);
+  explicit Bias(const ActionOptions&ao);
   void apply();
   unsigned getNumberOfDerivatives();
   void turnOnDerivatives();
diff --git a/src/bias/BiasValue.cpp b/src/bias/BiasValue.cpp
index 30ef5f794..9a2e9e013 100644
--- a/src/bias/BiasValue.cpp
+++ b/src/bias/BiasValue.cpp
@@ -81,7 +81,7 @@ PRINT ARG=t,cos,sin,d.x,d.y,d.z,mycos,mysin,cc.bias.vv1 STRIDE=1 FILE=colvar FMT
 
 class BiasValue : public Bias{
 public:
-  BiasValue(const ActionOptions&);
+  explicit BiasValue(const ActionOptions&);
   void calculate();
   static void registerKeywords(Keywords& keys);
 };
diff --git a/src/bias/ExtendedLagrangian.cpp b/src/bias/ExtendedLagrangian.cpp
index fcca8f001..171e92f01 100644
--- a/src/bias/ExtendedLagrangian.cpp
+++ b/src/bias/ExtendedLagrangian.cpp
@@ -129,7 +129,7 @@ class ExtendedLagrangian : public Bias{
   double kbt;
   Random rand;
 public:
-  ExtendedLagrangian(const ActionOptions&);
+  explicit ExtendedLagrangian(const ActionOptions&);
   void calculate();
   void update();
   void turnOnDerivatives();
diff --git a/src/bias/External.cpp b/src/bias/External.cpp
index 256321756..db9cfb53b 100644
--- a/src/bias/External.cpp
+++ b/src/bias/External.cpp
@@ -99,7 +99,7 @@ private:
   Grid* BiasGrid_;
   
 public:
-  External(const ActionOptions&);
+  explicit External(const ActionOptions&);
   ~External();
   void calculate();
   static void registerKeywords(Keywords& keys);
diff --git a/src/bias/LWalls.cpp b/src/bias/LWalls.cpp
index dbb26c8a1..ed8dd9ef9 100644
--- a/src/bias/LWalls.cpp
+++ b/src/bias/LWalls.cpp
@@ -71,7 +71,7 @@ class LWalls : public Bias{
   std::vector<double> eps;
   std::vector<double> offset;
 public:
-  LWalls(const ActionOptions&);
+  explicit LWalls(const ActionOptions&);
   void calculate();
   static void registerKeywords(Keywords& keys);
 };
diff --git a/src/bias/MetaD.cpp b/src/bias/MetaD.cpp
index 23f3259d4..d0bc095ed 100644
--- a/src/bias/MetaD.cpp
+++ b/src/bias/MetaD.cpp
@@ -284,7 +284,7 @@ private:
   std::string fmt;
 
 public:
-  MetaD(const ActionOptions&);
+  explicit MetaD(const ActionOptions&);
   ~MetaD();
   void calculate();
   void update();
diff --git a/src/bias/MovingRestraint.cpp b/src/bias/MovingRestraint.cpp
index 66275e39f..68f21d293 100644
--- a/src/bias/MovingRestraint.cpp
+++ b/src/bias/MovingRestraint.cpp
@@ -112,7 +112,7 @@ class MovingRestraint : public Bias{
   std::vector<double> work;
   double tot_work;
 public:
-  MovingRestraint(const ActionOptions&);
+  explicit MovingRestraint(const ActionOptions&);
   void calculate();
   static void registerKeywords( Keywords& keys );
 };
diff --git a/src/bias/Restraint.cpp b/src/bias/Restraint.cpp
index a6a8af0b0..8a2e1139d 100644
--- a/src/bias/Restraint.cpp
+++ b/src/bias/Restraint.cpp
@@ -67,7 +67,7 @@ class Restraint : public Bias{
   Value* valueBias;
   Value* valueForce2;
 public:
-  Restraint(const ActionOptions&);
+  explicit Restraint(const ActionOptions&);
   void calculate();
   static void registerKeywords(Keywords& keys);
 };
diff --git a/src/bias/UWalls.cpp b/src/bias/UWalls.cpp
index bb97ea4da..6f77344bc 100644
--- a/src/bias/UWalls.cpp
+++ b/src/bias/UWalls.cpp
@@ -71,7 +71,7 @@ class UWalls : public Bias{
   std::vector<double> eps;
   std::vector<double> offset;
 public:
-  UWalls(const ActionOptions&);
+  explicit UWalls(const ActionOptions&);
   void calculate();
   static void registerKeywords(Keywords& keys);
 };
diff --git a/src/cltools/Driver.cpp b/src/cltools/Driver.cpp
index 21d7b823d..cd27611d5 100644
--- a/src/cltools/Driver.cpp
+++ b/src/cltools/Driver.cpp
@@ -166,7 +166,7 @@ template<typename real>
 class Driver : public CLTool {
 public:
   static void registerKeywords( Keywords& keys );
-  Driver(const CLToolOptions& co );
+  explicit Driver(const CLToolOptions& co );
   int main(FILE* in,FILE*out,Communicator& pc);
   string description()const;
 };
diff --git a/src/cltools/GenTemplate.cpp b/src/cltools/GenTemplate.cpp
index a6aab531f..a0f494f4b 100644
--- a/src/cltools/GenTemplate.cpp
+++ b/src/cltools/GenTemplate.cpp
@@ -58,7 +58,7 @@ public CLTool
 {
 public:
   static void registerKeywords( Keywords& keys );
-  GenTemplate(const CLToolOptions& co );
+  explicit GenTemplate(const CLToolOptions& co );
   int main(FILE* in, FILE*out,Communicator& pc);
   string description()const{
     return "print out a template input for a particular action";
diff --git a/src/cltools/Info.cpp b/src/cltools/Info.cpp
index 51c9e7f95..9ed205ef0 100644
--- a/src/cltools/Info.cpp
+++ b/src/cltools/Info.cpp
@@ -54,7 +54,7 @@ public CLTool
 {
 public:
   static void registerKeywords( Keywords& keys );
-  Info(const CLToolOptions& co );
+  explicit Info(const CLToolOptions& co );
   int main(FILE* in, FILE*out,Communicator& pc);
   string description()const{
     return "provide informations about plumed";
diff --git a/src/cltools/Manual.cpp b/src/cltools/Manual.cpp
index 477f8c65c..8ad567fe1 100644
--- a/src/cltools/Manual.cpp
+++ b/src/cltools/Manual.cpp
@@ -59,7 +59,7 @@ public CLTool
 {
 public:
   static void registerKeywords( Keywords& keys );
-  Manual(const CLToolOptions& co );
+  explicit Manual(const CLToolOptions& co );
   int main(FILE* in, FILE*out,Communicator& pc);
   string description()const{
     return "print out a description of the keywords for an action in html";
diff --git a/src/cltools/SimpleMD.cpp b/src/cltools/SimpleMD.cpp
index 241acdb07..614ebbf59 100644
--- a/src/cltools/SimpleMD.cpp
+++ b/src/cltools/SimpleMD.cpp
@@ -104,7 +104,7 @@ static void registerKeywords( Keywords& keys ){
   keys.add("compulsory","wrapatoms","false","If true, atomic coordinates are written wrapped in minimal cell");
 }
 
-SimpleMD( const CLToolOptions& co ) :
+explicit SimpleMD( const CLToolOptions& co ) :
   CLTool(co),
   write_positions_first(true),
   write_statistics_first(true),
diff --git a/src/cltools/SumHills.cpp b/src/cltools/SumHills.cpp
index 47ed3d1c0..c02388b44 100644
--- a/src/cltools/SumHills.cpp
+++ b/src/cltools/SumHills.cpp
@@ -189,7 +189,7 @@ that gives  myhisto_0.dat,  myhisto_1.dat,  myhisto_3.dat etc..
 class CLToolSumHills : public CLTool {
 public:
   static void registerKeywords( Keywords& keys );
-  CLToolSumHills(const CLToolOptions& co );
+  explicit CLToolSumHills(const CLToolOptions& co );
   int main(FILE* in,FILE*out,Communicator& pc);
   string description()const;
 /// find a list of variables present, if they are periodic and which is the period
diff --git a/src/cltools/kT.cpp b/src/cltools/kT.cpp
index 684c1a741..123f4ed09 100644
--- a/src/cltools/kT.cpp
+++ b/src/cltools/kT.cpp
@@ -56,7 +56,7 @@ public CLTool
 {
 public:
   static void registerKeywords( Keywords& keys );
-  kt(const CLToolOptions& co );
+  explicit kt(const CLToolOptions& co );
   int main(FILE* in, FILE*out,Communicator& pc);
   string description()const{
     return "print out the value of kT at a particular temperature";
diff --git a/src/colvar/Angle.cpp b/src/colvar/Angle.cpp
index 1c2065e8c..27518bea6 100644
--- a/src/colvar/Angle.cpp
+++ b/src/colvar/Angle.cpp
@@ -88,7 +88,7 @@ class Angle : public Colvar {
   bool pbc;
 
 public:
-  Angle(const ActionOptions&);
+  explicit Angle(const ActionOptions&);
 // active methods:
   virtual void calculate();
   static void registerKeywords( Keywords& keys );
diff --git a/src/colvar/CH3Shifts.cpp b/src/colvar/CH3Shifts.cpp
index f8754b05c..fb40b62ae 100644
--- a/src/colvar/CH3Shifts.cpp
+++ b/src/colvar/CH3Shifts.cpp
@@ -123,7 +123,7 @@ class CH3Shifts : public Colvar {
   double len_pl2alm;
   double for_pl2alm;
 public:
-  CH3Shifts(const ActionOptions&);
+  explicit CH3Shifts(const ActionOptions&);
   ~CH3Shifts();
   static void registerKeywords( Keywords& keys );
   virtual void calculate();
diff --git a/src/colvar/CS2Backbone.cpp b/src/colvar/CS2Backbone.cpp
index e2811128f..4747462f7 100644
--- a/src/colvar/CS2Backbone.cpp
+++ b/src/colvar/CS2Backbone.cpp
@@ -135,7 +135,7 @@ class CS2Backbone : public Colvar {
   Coor<double> coor; 
   Coor<double> csforces;
 public:
-  CS2Backbone(const ActionOptions&);
+  explicit CS2Backbone(const ActionOptions&);
   ~CS2Backbone();
   static void registerKeywords( Keywords& keys );
   virtual void calculate();
diff --git a/src/colvar/Cell.cpp b/src/colvar/Cell.cpp
index f37f0a0cc..6c77b5369 100644
--- a/src/colvar/Cell.cpp
+++ b/src/colvar/Cell.cpp
@@ -53,7 +53,7 @@ class Cell : public Colvar {
   Value* components[3][3];
 
 public:
-  Cell(const ActionOptions&);
+  explicit Cell(const ActionOptions&);
 // active methods:
   virtual void calculate();
 /// Register all the keywords for this action
diff --git a/src/colvar/Constant.cpp b/src/colvar/Constant.cpp
index 3adee8764..c9daad3c2 100644
--- a/src/colvar/Constant.cpp
+++ b/src/colvar/Constant.cpp
@@ -58,7 +58,7 @@ PRINT ARG=sss.2
 class Constant : public Colvar {
   double value;
 public:
-  Constant(const ActionOptions&);
+  explicit Constant(const ActionOptions&);
 // active methods:
   virtual void calculate();
   static void registerKeywords( Keywords& keys );
diff --git a/src/colvar/ContactMap.cpp b/src/colvar/ContactMap.cpp
index 2b5d2ab26..e9789f916 100644
--- a/src/colvar/ContactMap.cpp
+++ b/src/colvar/ContactMap.cpp
@@ -81,7 +81,7 @@ private:
   vector<double> reference, weight;
 public:
   static void registerKeywords( Keywords& keys );
-  ContactMap(const ActionOptions&);
+  explicit ContactMap(const ActionOptions&);
   ~ContactMap();
 // active methods:
   virtual void calculate();
diff --git a/src/colvar/Coordination.cpp b/src/colvar/Coordination.cpp
index 83f2422a5..a2d71b8de 100644
--- a/src/colvar/Coordination.cpp
+++ b/src/colvar/Coordination.cpp
@@ -94,7 +94,7 @@ class Coordination : public CoordinationBase{
   SwitchingFunction switchingFunction;
 
 public:
-  Coordination(const ActionOptions&);
+  explicit Coordination(const ActionOptions&);
 // active methods:
   static void registerKeywords( Keywords& keys );
   virtual double pairing(double distance,double&dfunc,unsigned i,unsigned j)const;
diff --git a/src/colvar/CoordinationBase.h b/src/colvar/CoordinationBase.h
index 0e786a5e0..5f6ae3a7e 100644
--- a/src/colvar/CoordinationBase.h
+++ b/src/colvar/CoordinationBase.h
@@ -37,7 +37,7 @@ class CoordinationBase : public Colvar {
   bool firsttime;
   
 public:
-  CoordinationBase(const ActionOptions&);
+  explicit CoordinationBase(const ActionOptions&);
   ~CoordinationBase();
 // active methods:
   virtual void calculate();
diff --git a/src/colvar/DHEnergy.cpp b/src/colvar/DHEnergy.cpp
index 8bfc63b7b..590775db3 100644
--- a/src/colvar/DHEnergy.cpp
+++ b/src/colvar/DHEnergy.cpp
@@ -72,7 +72,7 @@ class DHEnergy : public CoordinationBase{
   double epsilon;
 
 public:
-  DHEnergy(const ActionOptions&);
+  explicit DHEnergy(const ActionOptions&);
 // active methods:
   static void registerKeywords( Keywords& keys );
   virtual double pairing(double distance,double&dfunc,unsigned i,unsigned j)const;
diff --git a/src/colvar/DRMSD.cpp b/src/colvar/DRMSD.cpp
index 9a41f57c5..f83ade6bb 100644
--- a/src/colvar/DRMSD.cpp
+++ b/src/colvar/DRMSD.cpp
@@ -82,7 +82,7 @@ class DRMSD : public Colvar {
   PLMD::DRMSD* drmsd_;
 
 public:
-  DRMSD(const ActionOptions&);
+  explicit DRMSD(const ActionOptions&);
   ~DRMSD();
   virtual void calculate();
   static void registerKeywords(Keywords& keys);
diff --git a/src/colvar/Dipole.cpp b/src/colvar/Dipole.cpp
index efa2567db..28d4f1af2 100644
--- a/src/colvar/Dipole.cpp
+++ b/src/colvar/Dipole.cpp
@@ -55,7 +55,7 @@ on the position) is computed on the geometric center of the group.
 class Dipole : public Colvar {
   vector<AtomNumber> ga_lista;
 public:
-  Dipole(const ActionOptions&);
+  explicit Dipole(const ActionOptions&);
   virtual void calculate();
   static void registerKeywords(Keywords& keys);
 };
diff --git a/src/colvar/Distance.cpp b/src/colvar/Distance.cpp
index 40fa4d76c..890f11a8a 100644
--- a/src/colvar/Distance.cpp
+++ b/src/colvar/Distance.cpp
@@ -118,7 +118,7 @@ class Distance : public Colvar {
 
 public:
   static void registerKeywords( Keywords& keys );
-  Distance(const ActionOptions&);
+  explicit Distance(const ActionOptions&);
 // active methods:
   virtual void calculate();
 };
diff --git a/src/colvar/Energy.cpp b/src/colvar/Energy.cpp
index 9b55c949b..e2f68a869 100644
--- a/src/colvar/Energy.cpp
+++ b/src/colvar/Energy.cpp
@@ -61,7 +61,7 @@ PRINT ARG=ene
 class Energy : public Colvar {
 
 public:
-  Energy(const ActionOptions&);
+  explicit Energy(const ActionOptions&);
 // active methods:
   void prepare();
   virtual void calculate();
diff --git a/src/colvar/Fake.cpp b/src/colvar/Fake.cpp
index c7f49c568..c0efb6e17 100644
--- a/src/colvar/Fake.cpp
+++ b/src/colvar/Fake.cpp
@@ -51,7 +51,7 @@ class ColvarFake : public Colvar {
 
 public:
   static void registerKeywords( Keywords& keys );
-  ColvarFake(const ActionOptions&);
+  explicit ColvarFake(const ActionOptions&);
 // active methods:
   virtual void calculate();
 };
diff --git a/src/colvar/Gyration.cpp b/src/colvar/Gyration.cpp
index 8f2572a21..212506769 100644
--- a/src/colvar/Gyration.cpp
+++ b/src/colvar/Gyration.cpp
@@ -93,7 +93,7 @@ private:
   bool nopbc;
 public:
   static void registerKeywords(Keywords& keys);
-  Gyration(const ActionOptions&);
+  explicit Gyration(const ActionOptions&);
   virtual void calculate();
 };
 
diff --git a/src/colvar/MultiRMSD.cpp b/src/colvar/MultiRMSD.cpp
index aeab313c8..d341dbad6 100644
--- a/src/colvar/MultiRMSD.cpp
+++ b/src/colvar/MultiRMSD.cpp
@@ -41,7 +41,7 @@ class MultiRMSD : public Colvar {
   ReferenceValuePack mypack;
 
 public:
-  MultiRMSD(const ActionOptions&);
+  explicit MultiRMSD(const ActionOptions&);
   ~MultiRMSD();
   virtual void calculate();
   static void registerKeywords(Keywords& keys);
diff --git a/src/colvar/NOE.cpp b/src/colvar/NOE.cpp
index 5f5e6b887..4f0eb01dc 100644
--- a/src/colvar/NOE.cpp
+++ b/src/colvar/NOE.cpp
@@ -80,7 +80,7 @@ private:
   bool             serial;
 public:
   static void registerKeywords( Keywords& keys );
-  NOE(const ActionOptions&);
+  explicit NOE(const ActionOptions&);
   ~NOE();
   virtual void calculate();
 };
diff --git a/src/colvar/PCARMSD.cpp b/src/colvar/PCARMSD.cpp
index 73321b8ff..eef472815 100644
--- a/src/colvar/PCARMSD.cpp
+++ b/src/colvar/PCARMSD.cpp
@@ -40,7 +40,7 @@ class PCARMSD : public Colvar {
   std::vector<PDB> pdbv;
   std::vector<string> pca_names;
 public:
-  PCARMSD(const ActionOptions&);
+  explicit PCARMSD(const ActionOptions&);
   ~PCARMSD();
   virtual void calculate();
   static void registerKeywords(Keywords& keys);
diff --git a/src/colvar/PathMSD.cpp b/src/colvar/PathMSD.cpp
index ac484f2fa..b5734044a 100644
--- a/src/colvar/PathMSD.cpp
+++ b/src/colvar/PathMSD.cpp
@@ -63,7 +63,7 @@ is shared, as well as most input options.
    
 class PathMSD : public PathMSDBase {
 public:
-  PathMSD(const ActionOptions&);
+  explicit PathMSD(const ActionOptions&);
   static void registerKeywords(Keywords& keys);
 };
 
diff --git a/src/colvar/PathMSDBase.h b/src/colvar/PathMSDBase.h
index d4140678b..f7d64b8ba 100644
--- a/src/colvar/PathMSDBase.h
+++ b/src/colvar/PathMSDBase.h
@@ -75,7 +75,7 @@ protected:
   std::vector< std::vector<double> > indexvec; // use double to allow isomaps
   unsigned nframes;
 public:
-  PathMSDBase(const ActionOptions&);
+  explicit PathMSDBase(const ActionOptions&);
 // active methods:
   virtual void calculate();
 //  virtual void prepare();
diff --git a/src/colvar/Position.cpp b/src/colvar/Position.cpp
index 943b07e57..cddd6364a 100644
--- a/src/colvar/Position.cpp
+++ b/src/colvar/Position.cpp
@@ -72,7 +72,7 @@ class Position : public Colvar {
 
 public:
   static void registerKeywords( Keywords& keys );
-  Position(const ActionOptions&);
+  explicit Position(const ActionOptions&);
 // active methods:
   virtual void calculate();
 };
diff --git a/src/colvar/PropertyMap.cpp b/src/colvar/PropertyMap.cpp
index 621d99ca6..8a4170075 100644
--- a/src/colvar/PropertyMap.cpp
+++ b/src/colvar/PropertyMap.cpp
@@ -81,7 +81,7 @@ is shared, as well as most input options.
    
 class PropertyMap : public PathMSDBase {
 public:
-  PropertyMap(const ActionOptions&);
+  explicit PropertyMap(const ActionOptions&);
   static void registerKeywords(Keywords& keys);
 };
 
diff --git a/src/colvar/Puckering.cpp b/src/colvar/Puckering.cpp
index 9157940f6..b39b1b920 100644
--- a/src/colvar/Puckering.cpp
+++ b/src/colvar/Puckering.cpp
@@ -56,7 +56,7 @@ namespace colvar{
 class Puckering : public Colvar {
 
 public:
-  Puckering(const ActionOptions&);
+  explicit Puckering(const ActionOptions&);
   virtual void calculate();
   static void registerKeywords(Keywords& keys);
 };
diff --git a/src/colvar/RDC.cpp b/src/colvar/RDC.cpp
index c471666fa..5cf65e1c0 100644
--- a/src/colvar/RDC.cpp
+++ b/src/colvar/RDC.cpp
@@ -129,7 +129,7 @@ private:
   bool serial;
   bool svd;
 public:
-  RDC(const ActionOptions&);
+  explicit RDC(const ActionOptions&);
   static void registerKeywords( Keywords& keys );
   virtual void calculate();
 };
diff --git a/src/colvar/RMSD.cpp b/src/colvar/RMSD.cpp
index 352007ada..df1daf679 100644
--- a/src/colvar/RMSD.cpp
+++ b/src/colvar/RMSD.cpp
@@ -41,7 +41,7 @@ class RMSD : public Colvar {
   bool squared; 
 
 public:
-  RMSD(const ActionOptions&);
+  explicit RMSD(const ActionOptions&);
   ~RMSD();
   virtual void calculate();
   static void registerKeywords(Keywords& keys);
diff --git a/src/colvar/Template.cpp b/src/colvar/Template.cpp
index 0bcc1030d..28b1443a0 100644
--- a/src/colvar/Template.cpp
+++ b/src/colvar/Template.cpp
@@ -47,7 +47,7 @@ class Template : public Colvar {
   bool pbc;
 
 public:
-  Template(const ActionOptions&);
+  explicit Template(const ActionOptions&);
 // active methods:
   virtual void calculate();
   static void registerKeywords(Keywords& keys);
diff --git a/src/colvar/Torsion.cpp b/src/colvar/Torsion.cpp
index f4e2b2fe7..486774f8b 100644
--- a/src/colvar/Torsion.cpp
+++ b/src/colvar/Torsion.cpp
@@ -71,7 +71,7 @@ class Torsion : public Colvar {
   bool do_cosine;
 
 public:
-  Torsion(const ActionOptions&);
+  explicit Torsion(const ActionOptions&);
 // active methods:
   virtual void calculate();
   static void registerKeywords(Keywords& keys);
diff --git a/src/colvar/Volume.cpp b/src/colvar/Volume.cpp
index 951960ac4..4f4f79c66 100644
--- a/src/colvar/Volume.cpp
+++ b/src/colvar/Volume.cpp
@@ -49,7 +49,7 @@ PRINT ARG=vol
 class Volume : public Colvar {
 
 public:
-  Volume(const ActionOptions&);
+  explicit Volume(const ActionOptions&);
 // active methods:
   virtual void calculate();
 /// Register all the keywords for this action
diff --git a/src/core/Action.h b/src/core/Action.h
index a6ec62ece..0ae02f996 100644
--- a/src/core/Action.h
+++ b/src/core/Action.h
@@ -157,12 +157,12 @@ public:
 
 public:
 /// Standard constructor from ActionOptions
-  Action(const ActionOptions&);
+  explicit Action(const ActionOptions&);
 /// Destructor
   virtual ~Action();
 private:
 /// Copy constructor is disabled (private and unimplemented)
-  Action(const Action&a);
+  explicit Action(const Action&a);
 /// Assignment operator is disabled (private and unimplemented)
   Action& operator=(const Action&a);
 public:
diff --git a/src/core/ActionAtomistic.h b/src/core/ActionAtomistic.h
index 2d15c2dad..4a32b2700 100644
--- a/src/core/ActionAtomistic.h
+++ b/src/core/ActionAtomistic.h
@@ -138,7 +138,7 @@ public:
 
 // virtual functions:
 
-  ActionAtomistic(const ActionOptions&ao);
+  explicit ActionAtomistic(const ActionOptions&ao);
   ~ActionAtomistic();
 
   static void registerKeywords( Keywords& keys );
diff --git a/src/core/ActionPilot.h b/src/core/ActionPilot.h
index 551c73d0b..359e0f55a 100644
--- a/src/core/ActionPilot.h
+++ b/src/core/ActionPilot.h
@@ -43,7 +43,7 @@ class ActionPilot:
 protected:
   int getStride()const;
 public:
-  ActionPilot(const ActionOptions&);
+  explicit ActionPilot(const ActionOptions&);
 /// Create the keywords for actionPilot
   static void registerKeywords(Keywords& keys);
 /// Check if the action is active on this step
diff --git a/src/core/ActionSet.h b/src/core/ActionSet.h
index 3a29cda86..420ffd3fa 100644
--- a/src/core/ActionSet.h
+++ b/src/core/ActionSet.h
@@ -40,7 +40,7 @@ class ActionSet:
 {
   PlumedMain& plumed;
 public:
-  ActionSet(PlumedMain&p);
+  explicit ActionSet(PlumedMain&p);
   ~ActionSet();
 /// Clear and deletes all the included pointers.
   void clearDelete();
diff --git a/src/core/ActionSetup.h b/src/core/ActionSetup.h
index d8f1412df..b0708b306 100644
--- a/src/core/ActionSetup.h
+++ b/src/core/ActionSetup.h
@@ -34,7 +34,7 @@ class ActionSetup :
   public virtual Action {
 public:
 /// Constructor
-  ActionSetup(const ActionOptions&ao);
+  explicit ActionSetup(const ActionOptions&ao);
 /// Creator of keywords
   static void registerKeywords( Keywords& keys ); 
 /// Do nothing.
diff --git a/src/core/ActionWithArguments.h b/src/core/ActionWithArguments.h
index feef08a6d..a12bdc78a 100644
--- a/src/core/ActionWithArguments.h
+++ b/src/core/ActionWithArguments.h
@@ -69,7 +69,7 @@ public:
 /// Add forces to arguments (used in apply)
   void addForcesOnArguments( const std::vector<double>& forces );
 public:
-  ActionWithArguments(const ActionOptions&);
+  explicit ActionWithArguments(const ActionOptions&);
   virtual ~ActionWithArguments(){}
 /// Calculate the numerical derivatives
 /// N.B. only pass an ActionWithValue to this routine if you know exactly what you 
diff --git a/src/core/ActionWithValue.h b/src/core/ActionWithValue.h
index b4feadca8..39ddbf2f4 100644
--- a/src/core/ActionWithValue.h
+++ b/src/core/ActionWithValue.h
@@ -109,7 +109,7 @@ protected:
 /// Return a pointer to the value by name
   Value* getPntrToComponent(const std::string& name);
 public:
-  ActionWithValue(const ActionOptions&ao);
+  explicit ActionWithValue(const ActionOptions&ao);
   ~ActionWithValue();
 
 /// Register all the relevant keywords for the action  
diff --git a/src/core/ActionWithVirtualAtom.h b/src/core/ActionWithVirtualAtom.h
index 43b1ad2e3..3323b5da5 100644
--- a/src/core/ActionWithVirtualAtom.h
+++ b/src/core/ActionWithVirtualAtom.h
@@ -78,7 +78,7 @@ public:
   const std::map<AtomNumber,Tensor> & getGradients()const;
 /// Return the atom id of the corresponding virtual atom
   AtomNumber getIndex()const;
-  ActionWithVirtualAtom(const ActionOptions&ao);
+  explicit ActionWithVirtualAtom(const ActionOptions&ao);
   ~ActionWithVirtualAtom();
   static void registerKeywords(Keywords& keys);
   void setGradientsIfNeeded();
diff --git a/src/core/Atoms.h b/src/core/Atoms.h
index 7da51dc06..3318fe1f4 100644
--- a/src/core/Atoms.h
+++ b/src/core/Atoms.h
@@ -128,7 +128,7 @@ class Atoms
 
 public:
 
-  Atoms(PlumedMain&plumed);
+  explicit Atoms(PlumedMain&plumed);
   ~Atoms();
 
   void init();
diff --git a/src/core/CLTool.h b/src/core/CLTool.h
index ba7c44044..b434c47c1 100644
--- a/src/core/CLTool.h
+++ b/src/core/CLTool.h
@@ -42,7 +42,7 @@ private:
   const Keywords& keys;
   static Keywords emptyKeys;
 public:
-  CLToolOptions(const std::string &name);
+  explicit CLToolOptions(const std::string &name);
   CLToolOptions(const CLToolOptions& co, const Keywords& k);
 };
 
@@ -89,7 +89,7 @@ public:
   enum {unset,commandline,ifile} inputdata;
 /// Create the help keywords 
   static void registerKeywords( Keywords& keys );
-  CLTool(const CLToolOptions& co ); 
+  explicit CLTool(const CLToolOptions& co ); 
 /// Read the arguments from the command line
   bool readInput( int argc, char**argv, FILE* in, FILE*out );
 /// virtual function mapping to the specific main for each tool
diff --git a/src/core/CLToolMain.cpp b/src/core/CLToolMain.cpp
index ef97621ec..a77e2b1cc 100644
--- a/src/core/CLToolMain.cpp
+++ b/src/core/CLToolMain.cpp
@@ -203,7 +203,7 @@ int CLToolMain::run(int argc, char **argv,FILE*in,FILE*out,Communicator& pc){
         "Commands:\n";
     fprintf(out,"%s",msg.c_str());
     for(unsigned j=0;j<availableCxx.size();++j){
-      CLTool *cl=cltoolRegister().create(availableCxx[j]);
+      CLTool *cl=cltoolRegister().create(CLToolOptions(availableCxx[j]));
       plumed_assert(cl);
       string manual=availableCxx[j]+" : "+cl->description();
       delete cl;
@@ -229,7 +229,7 @@ int CLToolMain::run(int argc, char **argv,FILE*in,FILE*out,Communicator& pc){
   string command(argv[i]);
 
   if(find(availableCxx.begin(),availableCxx.end(),command)!=availableCxx.end()){
-    CLTool *cl=cltoolRegister().create(command);
+    CLTool *cl=cltoolRegister().create(CLToolOptions(command));
     plumed_assert(cl); 
     // Read the command line options (returns false if we are just printing help)
     if( !cl->readInput( argc-i,&argv[i],in,out ) ){ delete cl; return 0; } 
diff --git a/src/core/Colvar.h b/src/core/Colvar.h
index e6a389542..d4366c474 100644
--- a/src/core/Colvar.h
+++ b/src/core/Colvar.h
@@ -66,7 +66,7 @@ protected:
   void           setBoxDerivativesNoPbc(Value*);
 public:
   bool checkIsEnergy(){return isEnergy;}
-  Colvar(const ActionOptions&);
+  explicit Colvar(const ActionOptions&);
   ~Colvar(){}
   static void registerKeywords( Keywords& keys );
   virtual unsigned getNumberOfDerivatives();
diff --git a/src/core/GREX.h b/src/core/GREX.h
index 0f4996223..3d0e42f1f 100644
--- a/src/core/GREX.h
+++ b/src/core/GREX.h
@@ -49,7 +49,7 @@ class GREX:
   std::string buffer;
   int myreplica;
 public:
-  GREX(PlumedMain&);
+  explicit GREX(PlumedMain&);
   ~GREX();
   void cmd(const std::string&key,void*val=NULL);
   void calculate();
diff --git a/src/core/SetupMolInfo.h b/src/core/SetupMolInfo.h
index f741e8d9d..99088fc73 100644
--- a/src/core/SetupMolInfo.h
+++ b/src/core/SetupMolInfo.h
@@ -43,7 +43,7 @@ private:
 public:
   ~SetupMolInfo();
   static void registerKeywords( Keywords& keys );
-  SetupMolInfo(const ActionOptions&ao);
+  explicit SetupMolInfo(const ActionOptions&ao);
   void getBackbone( std::vector<std::string>& resstrings, const std::string& fortype, std::vector< std::vector<AtomNumber> >& backbone );
   std::string getAtomName(AtomNumber a)const;
   unsigned getResidueNumber(AtomNumber a)const;
diff --git a/src/core/TargetDist.h b/src/core/TargetDist.h
index 111858ff8..8bc2c90de 100644
--- a/src/core/TargetDist.h
+++ b/src/core/TargetDist.h
@@ -37,7 +37,7 @@ private:
   std::vector<double> target;
   Log &log;
 public:
-  TargetDist(Log& log) : log(log) {}
+  explicit TargetDist(Log& log) : log(log) {}
   void read( const PDB& pdb, std::vector<Value*> args ); 
   void read( const std::vector<double>& targ, std::vector<Value*> ar );
   double calculate( std::vector<double>& derivs );
diff --git a/src/crystallization/DFSBasic.cpp b/src/crystallization/DFSBasic.cpp
index 8412323e7..58f9d053b 100644
--- a/src/crystallization/DFSBasic.cpp
+++ b/src/crystallization/DFSBasic.cpp
@@ -137,7 +137,7 @@ public:
 /// Create manual
   static void registerKeywords( Keywords& keys );
 /// Constructor
-  DFSBasic(const ActionOptions&);
+  explicit DFSBasic(const ActionOptions&);
 ///
   void doCalculationOnCluster();
 };
diff --git a/src/crystallization/DFSClusterRadius.cpp b/src/crystallization/DFSClusterRadius.cpp
index b39fd30bc..d72bf626a 100644
--- a/src/crystallization/DFSClusterRadius.cpp
+++ b/src/crystallization/DFSClusterRadius.cpp
@@ -48,7 +48,7 @@ public:
 /// Create manual
   static void registerKeywords( Keywords& keys );
 /// Constructor
-  DFSClusterDiameter(const ActionOptions&);
+  explicit DFSClusterDiameter(const ActionOptions&);
 ///
   void doCalculationOnCluster();
 ///
diff --git a/src/crystallization/DFSClustering.h b/src/crystallization/DFSClustering.h
index 09efb83f4..3ad613abe 100644
--- a/src/crystallization/DFSClustering.h
+++ b/src/crystallization/DFSClustering.h
@@ -52,7 +52,7 @@ public:
 /// Create manual
   static void registerKeywords( Keywords& keys );
 /// Constructor
-  DFSClustering(const ActionOptions&);
+  explicit DFSClustering(const ActionOptions&);
 /// Required as we have to be able to deal with vectors
   unsigned getNumberOfQuantities();
 /// This checks whether derivatives can be computed given the base multicolvar
diff --git a/src/crystallization/DFSMaxSize.cpp b/src/crystallization/DFSMaxSize.cpp
index 877ced320..93e59f1d3 100644
--- a/src/crystallization/DFSMaxSize.cpp
+++ b/src/crystallization/DFSMaxSize.cpp
@@ -79,7 +79,7 @@ public:
 /// Create manual
   static void registerKeywords( Keywords& keys );
 /// Constructor
-  DFSMaxCluster(const ActionOptions&);
+  explicit DFSMaxCluster(const ActionOptions&);
 ///
   void doCalculationOnCluster();
 };
diff --git a/src/crystallization/DFSNumberOfClusters.cpp b/src/crystallization/DFSNumberOfClusters.cpp
index e11f81f42..6db6912e0 100644
--- a/src/crystallization/DFSNumberOfClusters.cpp
+++ b/src/crystallization/DFSNumberOfClusters.cpp
@@ -45,7 +45,7 @@ public:
 /// Create manual
   static void registerKeywords( Keywords& keys );
 /// Constructor
-  DFSNumberOfClusters(const ActionOptions&);
+  explicit DFSNumberOfClusters(const ActionOptions&);
 ///
   void doCalculationOnCluster();
 };
diff --git a/src/crystallization/Fccubic.cpp b/src/crystallization/Fccubic.cpp
index ebcd35e39..617ae7070 100644
--- a/src/crystallization/Fccubic.cpp
+++ b/src/crystallization/Fccubic.cpp
@@ -50,7 +50,7 @@ private:
   SwitchingFunction switchingFunction;
 public:
   static void registerKeywords( Keywords& keys );
-  Fccubic(const ActionOptions&);
+  explicit Fccubic(const ActionOptions&);
 // active methods:
   virtual double compute( const unsigned& tindex, multicolvar::AtomValuePack& myatoms ) const ; 
 /// Returns the number of coordinates of the field
diff --git a/src/crystallization/Gradient.h b/src/crystallization/Gradient.h
index 7a8b6a8e1..01f06cbd7 100644
--- a/src/crystallization/Gradient.h
+++ b/src/crystallization/Gradient.h
@@ -40,7 +40,7 @@ private:
   std::string kerneltype;
 public:
   static void registerKeywords( Keywords& keys );
-  Gradient(const ActionOptions&);
+  explicit Gradient(const ActionOptions&);
 /// Get the number of quantities that are calculated each time
   virtual unsigned getNumberOfQuantities();
 /// Check on pbc - is it orthorhombic
diff --git a/src/crystallization/GradientVessel.cpp b/src/crystallization/GradientVessel.cpp
index 0d202c7ea..ff28afa4f 100644
--- a/src/crystallization/GradientVessel.cpp
+++ b/src/crystallization/GradientVessel.cpp
@@ -37,7 +37,7 @@ private:
 public:
   static void registerKeywords( Keywords& keys );
   static void reserveKeyword( Keywords& keys );
-  GradientVessel( const vesselbase::VesselOptions& da );
+  explicit GradientVessel( const vesselbase::VesselOptions& da );
   std::string value_descriptor();
   void resize();
   bool calculate( const unsigned& current, MultiValue& myvals, std::vector<double>& buffer, std::vector<unsigned>& der_list ) const ;
diff --git a/src/crystallization/LocalSteinhardt.h b/src/crystallization/LocalSteinhardt.h
index bd71cc629..bfa6ac048 100644
--- a/src/crystallization/LocalSteinhardt.h
+++ b/src/crystallization/LocalSteinhardt.h
@@ -32,7 +32,7 @@ public:
   static void registerKeywords( Keywords& keys ){
     OrientationSphere::registerKeywords(keys);
   }
-  LocalSteinhardt(const ActionOptions& ao): Action(ao), OrientationSphere(ao)
+  explicit LocalSteinhardt(const ActionOptions& ao): Action(ao), OrientationSphere(ao)
   {
      T* mc=dynamic_cast<T*>( getBaseMultiColvar(0) );
      if(!mc) error("input action is not calculating the correct vectors");
diff --git a/src/crystallization/MoleculeOrientation.cpp b/src/crystallization/MoleculeOrientation.cpp
index c47a91435..7f458d91d 100644
--- a/src/crystallization/MoleculeOrientation.cpp
+++ b/src/crystallization/MoleculeOrientation.cpp
@@ -53,7 +53,7 @@ class MoleculeOrientation : public VectorMultiColvar {
 private:
 public:
   static void registerKeywords( Keywords& keys );
-  MoleculeOrientation( const ActionOptions& ao );
+  explicit MoleculeOrientation( const ActionOptions& ao );
   void calculateVector( multicolvar::AtomValuePack& myatoms ) const;
 };
 
diff --git a/src/crystallization/MoleculePlane.cpp b/src/crystallization/MoleculePlane.cpp
index e9c0c74d1..e40cc43cc 100644
--- a/src/crystallization/MoleculePlane.cpp
+++ b/src/crystallization/MoleculePlane.cpp
@@ -40,7 +40,7 @@ class MoleculePlane : public VectorMultiColvar {
 private:
 public:
   static void registerKeywords( Keywords& keys );
-  MoleculePlane( const ActionOptions& ao );
+  explicit MoleculePlane( const ActionOptions& ao );
   void calculateVector( multicolvar::AtomValuePack& myatoms ) const ;
 };
 
diff --git a/src/crystallization/OrientationSphere.h b/src/crystallization/OrientationSphere.h
index 20b43cdc1..cdf5b6ac2 100644
--- a/src/crystallization/OrientationSphere.h
+++ b/src/crystallization/OrientationSphere.h
@@ -37,7 +37,7 @@ private:
   SwitchingFunction switchingFunction;
 public:
   static void registerKeywords( Keywords& keys );
-  OrientationSphere(const ActionOptions&);
+  explicit OrientationSphere(const ActionOptions&);
   double compute( const unsigned& tindex, multicolvar::AtomValuePack& myatoms ) const ;
   virtual double transformDotProduct( const double& dot, double& df ) const ;
   virtual double calculateCoordinationPrefactor( const double& coord, double& df ) const ;
diff --git a/src/crystallization/Q3.cpp b/src/crystallization/Q3.cpp
index ab47f2634..033d6d407 100644
--- a/src/crystallization/Q3.cpp
+++ b/src/crystallization/Q3.cpp
@@ -171,7 +171,7 @@ namespace crystallization {
 class Q3 : public Steinhardt {
 public:
   static void registerKeywords( Keywords& keys );
-  Q3( const ActionOptions& ao );
+  explicit Q3( const ActionOptions& ao );
 };
 
 PLUMED_REGISTER_ACTION(Q3,"Q3")
diff --git a/src/crystallization/Q4.cpp b/src/crystallization/Q4.cpp
index 7f8fc5277..17a370dfd 100644
--- a/src/crystallization/Q4.cpp
+++ b/src/crystallization/Q4.cpp
@@ -170,7 +170,7 @@ namespace crystallization {
 class Q4 : public Steinhardt {
 public:
   static void registerKeywords( Keywords& keys );
-  Q4( const ActionOptions& ao );
+  explicit Q4( const ActionOptions& ao );
 };
 
 PLUMED_REGISTER_ACTION(Q4,"Q4")
diff --git a/src/crystallization/Q6.cpp b/src/crystallization/Q6.cpp
index 49bcdf1d7..169f07749 100644
--- a/src/crystallization/Q6.cpp
+++ b/src/crystallization/Q6.cpp
@@ -170,7 +170,7 @@ namespace crystallization {
 class Q6 : public Steinhardt {
 public:
   static void registerKeywords( Keywords& keys );
-  Q6( const ActionOptions& ao );
+  explicit Q6( const ActionOptions& ao );
 };
 
 PLUMED_REGISTER_ACTION(Q6,"Q6")
diff --git a/src/crystallization/SMAC.cpp b/src/crystallization/SMAC.cpp
index bb0bdd5dd..bb875cd3e 100644
--- a/src/crystallization/SMAC.cpp
+++ b/src/crystallization/SMAC.cpp
@@ -32,7 +32,7 @@ private:
   SwitchingFunction coord_switch;
 public:
   static void registerKeywords( Keywords& keys ); 
-  SMAC(const ActionOptions& ao); 
+  explicit SMAC(const ActionOptions& ao); 
   double transformDotProduct( const double& dot, double& df ) const ; 
   double calculateCoordinationPrefactor( const double& coord, double& df ) const ;
 };
diff --git a/src/crystallization/SimpleCubic.cpp b/src/crystallization/SimpleCubic.cpp
index 24ef1e889..3bb23d476 100644
--- a/src/crystallization/SimpleCubic.cpp
+++ b/src/crystallization/SimpleCubic.cpp
@@ -62,7 +62,7 @@ private:
   SwitchingFunction switchingFunction;
 public:
   static void registerKeywords( Keywords& keys );
-  SimpleCubic(const ActionOptions&);
+  explicit SimpleCubic(const ActionOptions&);
 // active methods:
   virtual double compute( const unsigned& tindex, multicolvar::AtomValuePack& myatoms ) const ; 
 /// Returns the number of coordinates of the field
diff --git a/src/crystallization/Steinhardt.h b/src/crystallization/Steinhardt.h
index 906f98a37..ac666c9f7 100644
--- a/src/crystallization/Steinhardt.h
+++ b/src/crystallization/Steinhardt.h
@@ -40,7 +40,7 @@ protected:
   void setAngularMomentum( const unsigned& ang );
 public:
   static void registerKeywords( Keywords& keys );
-  Steinhardt( const ActionOptions& ao );
+  explicit Steinhardt( const ActionOptions& ao );
   void calculateVector( multicolvar::AtomValuePack& myatoms ) const ;
   double deriv_poly( const unsigned&, const double&, double& ) const ;
 };
diff --git a/src/crystallization/Tetrahedral.cpp b/src/crystallization/Tetrahedral.cpp
index 0c07b22e8..cb1f09d40 100644
--- a/src/crystallization/Tetrahedral.cpp
+++ b/src/crystallization/Tetrahedral.cpp
@@ -82,7 +82,7 @@ private:
   SwitchingFunction switchingFunction;
 public:
   static void registerKeywords( Keywords& keys );
-  Tetrahedral(const ActionOptions&);
+  explicit Tetrahedral(const ActionOptions&);
 // active methods:
   virtual double compute( const unsigned& tindex, multicolvar::AtomValuePack& myatoms ) const ; 
 /// Returns the number of coordinates of the field
diff --git a/src/crystallization/VectorMean.cpp b/src/crystallization/VectorMean.cpp
index 940434513..081fdffc7 100644
--- a/src/crystallization/VectorMean.cpp
+++ b/src/crystallization/VectorMean.cpp
@@ -32,7 +32,7 @@ class VectorMean : public vesselbase::FunctionVessel {
 public:
   static void registerKeywords( Keywords& keys );
   static void reserveKeyword( Keywords& keys );
-  VectorMean( const vesselbase::VesselOptions& da );
+  explicit VectorMean( const vesselbase::VesselOptions& da );
   std::string value_descriptor();
   void resize();
   bool calculate( const unsigned& current, MultiValue& myvals, std::vector<double>& buffer, std::vector<unsigned>& der_list ) const ;
diff --git a/src/crystallization/VectorMultiColvar.h b/src/crystallization/VectorMultiColvar.h
index 37db089aa..247d9acb6 100644
--- a/src/crystallization/VectorMultiColvar.h
+++ b/src/crystallization/VectorMultiColvar.h
@@ -48,7 +48,7 @@ protected:
   void addForcesOnAtoms( const std::vector<double>& inforces );
 public:
   static void registerKeywords( Keywords& keys );
-  VectorMultiColvar(const ActionOptions&);
+  explicit VectorMultiColvar(const ActionOptions&);
   ~VectorMultiColvar(){}
 /// The norm of a vector is not periodic
   virtual bool isPeriodic(){ return false; }
diff --git a/src/crystallization/VectorSum.cpp b/src/crystallization/VectorSum.cpp
index 2c0f6dfa7..49caf038c 100644
--- a/src/crystallization/VectorSum.cpp
+++ b/src/crystallization/VectorSum.cpp
@@ -32,7 +32,7 @@ class VectorSum : public vesselbase::FunctionVessel {
 public:
   static void registerKeywords( Keywords& keys );
   static void reserveKeyword( Keywords& keys );
-  VectorSum( const vesselbase::VesselOptions& da );
+  explicit VectorSum( const vesselbase::VesselOptions& da );
   std::string value_descriptor();
   void resize();
   bool calculate( const unsigned& current, MultiValue& myvals, std::vector<double>& buffer, std::vector<unsigned>& der_list ) const ;
diff --git a/src/function/Combine.cpp b/src/function/Combine.cpp
index 0c46d8350..fce4e1682 100644
--- a/src/function/Combine.cpp
+++ b/src/function/Combine.cpp
@@ -66,7 +66,7 @@ class Combine :
   std::vector<double> coefficients;
   std::vector<double> powers;
 public:
-  Combine(const ActionOptions&);
+  explicit Combine(const ActionOptions&);
   void calculate();
   static void registerKeywords(Keywords& keys);
 };
diff --git a/src/function/Ensemble.cpp b/src/function/Ensemble.cpp
index 172f467b9..b5b0cc5d5 100644
--- a/src/function/Ensemble.cpp
+++ b/src/function/Ensemble.cpp
@@ -58,7 +58,7 @@ class Ensemble :
   unsigned  ens_dim;
   double    fact;
 public:
-  Ensemble(const ActionOptions&);
+  explicit Ensemble(const ActionOptions&);
   void calculate();
   static void registerKeywords(Keywords& keys);
 };
diff --git a/src/function/FuncPathMSD.cpp b/src/function/FuncPathMSD.cpp
index e42eb38ad..c66ebe99b 100644
--- a/src/function/FuncPathMSD.cpp
+++ b/src/function/FuncPathMSD.cpp
@@ -141,7 +141,7 @@ struct pairordering {
 };
 
 public:
-  FuncPathMSD(const ActionOptions&);
+  explicit FuncPathMSD(const ActionOptions&);
 // active methods:
   virtual void calculate();
   virtual void prepare();
diff --git a/src/function/FuncSumHills.cpp b/src/function/FuncSumHills.cpp
index 0db4ce6c2..662a221c7 100644
--- a/src/function/FuncSumHills.cpp
+++ b/src/function/FuncSumHills.cpp
@@ -193,7 +193,7 @@ class FuncSumHills :
   BiasRepresentation *biasrep;
   BiasRepresentation *historep;
 public:
-  FuncSumHills(const ActionOptions&);
+  explicit FuncSumHills(const ActionOptions&);
   ~FuncSumHills();
   void calculate(); // this probably is not needed
   bool checkFilesAreExisting(const vector<string> & hills ); 
diff --git a/src/function/Function.h b/src/function/Function.h
index 6379cd9af..e4da4685b 100644
--- a/src/function/Function.h
+++ b/src/function/Function.h
@@ -44,7 +44,7 @@ protected:
   void addValueWithDerivatives();
   void addComponentWithDerivatives( const std::string& name ); 
 public:
-  Function(const ActionOptions&);
+  explicit Function(const ActionOptions&);
   virtual ~Function(){}
   void apply();
   static void registerKeywords(Keywords&);
diff --git a/src/function/Matheval.cpp b/src/function/Matheval.cpp
index 77a56d6f3..c0aaf7c9b 100644
--- a/src/function/Matheval.cpp
+++ b/src/function/Matheval.cpp
@@ -103,7 +103,7 @@ class Matheval :
   vector<double> values;
   vector<char*> names;
 public:
-  Matheval(const ActionOptions&);
+  explicit Matheval(const ActionOptions&);
   ~Matheval();
   void calculate();
   static void registerKeywords(Keywords& keys);
diff --git a/src/function/Piecewise.cpp b/src/function/Piecewise.cpp
index a89837be7..1522bee22 100644
--- a/src/function/Piecewise.cpp
+++ b/src/function/Piecewise.cpp
@@ -75,7 +75,7 @@ class Piecewise :
 {
   std::vector<std::pair<double,double> > points;
 public:
-  Piecewise(const ActionOptions&);
+  explicit Piecewise(const ActionOptions&);
   void calculate();
   static void registerKeywords(Keywords& keys);
 };
diff --git a/src/function/Sort.cpp b/src/function/Sort.cpp
index 9bc0cafe9..4bd763864 100644
--- a/src/function/Sort.cpp
+++ b/src/function/Sort.cpp
@@ -61,7 +61,7 @@ class Sort :
   public Function
 {
 public:
-  Sort(const ActionOptions&);
+  explicit Sort(const ActionOptions&);
   void calculate();
   static void registerKeywords(Keywords& keys);
 };
diff --git a/src/function/Target.cpp b/src/function/Target.cpp
index e0a9de726..b1084025c 100644
--- a/src/function/Target.cpp
+++ b/src/function/Target.cpp
@@ -49,7 +49,7 @@ private:
   ReferenceValuePack mypack;
   PLMD::ArgumentOnlyDistance* target;
 public:
-  Target(const ActionOptions&);
+  explicit Target(const ActionOptions&);
   ~Target();
   virtual void calculate();
   static void registerKeywords(Keywords& keys );
diff --git a/src/generic/Debug.cpp b/src/generic/Debug.cpp
index 89a83364c..dc27ec166 100644
--- a/src/generic/Debug.cpp
+++ b/src/generic/Debug.cpp
@@ -54,7 +54,7 @@ class Debug:
   bool novirial;
   bool detailedTimers;
 public:
-  Debug(const ActionOptions&ao);
+  explicit Debug(const ActionOptions&ao);
 /// Register all the relevant keywords for the action  
   static void registerKeywords( Keywords& keys );
   void calculate(){}
diff --git a/src/generic/DumpAtoms.cpp b/src/generic/DumpAtoms.cpp
index 0c79ce186..7e2830dbd 100644
--- a/src/generic/DumpAtoms.cpp
+++ b/src/generic/DumpAtoms.cpp
@@ -112,7 +112,7 @@ class DumpAtoms:
   XDRFILE* xd;
 #endif
 public:
-  DumpAtoms(const ActionOptions&);
+  explicit DumpAtoms(const ActionOptions&);
   ~DumpAtoms();
   static void registerKeywords( Keywords& keys );
   void calculate(){}
diff --git a/src/generic/DumpDerivatives.cpp b/src/generic/DumpDerivatives.cpp
index 4fdb1d050..5af7dfa8a 100644
--- a/src/generic/DumpDerivatives.cpp
+++ b/src/generic/DumpDerivatives.cpp
@@ -62,7 +62,7 @@ public ActionWithArguments
   OFile of;
 public:
   void calculate(){}
-  DumpDerivatives(const ActionOptions&);
+  explicit DumpDerivatives(const ActionOptions&);
   static void registerKeywords(Keywords& keys);
   void apply(){}
   void update();
diff --git a/src/generic/DumpForces.cpp b/src/generic/DumpForces.cpp
index 22202a9b6..7ec8822c7 100644
--- a/src/generic/DumpForces.cpp
+++ b/src/generic/DumpForces.cpp
@@ -61,7 +61,7 @@ public ActionWithArguments
   OFile of;
 public:
   void calculate(){}
-  DumpForces(const ActionOptions&);
+  explicit DumpForces(const ActionOptions&);
   static void registerKeywords(Keywords& keys);
   void apply(){}
   void update();
diff --git a/src/generic/DumpMassCharge.cpp b/src/generic/DumpMassCharge.cpp
index 9e4446e68..a28d2cfd4 100644
--- a/src/generic/DumpMassCharge.cpp
+++ b/src/generic/DumpMassCharge.cpp
@@ -97,7 +97,7 @@ class DumpMassCharge:
   string file;
   bool first;
 public:
-  DumpMassCharge(const ActionOptions&);
+  explicit DumpMassCharge(const ActionOptions&);
   ~DumpMassCharge();
   static void registerKeywords( Keywords& keys );
   void calculate(){}
diff --git a/src/generic/DumpProjections.cpp b/src/generic/DumpProjections.cpp
index a13c18f7a..7a639964b 100644
--- a/src/generic/DumpProjections.cpp
+++ b/src/generic/DumpProjections.cpp
@@ -46,7 +46,7 @@ public ActionWithArguments
   OFile of;
 public:
   void calculate(){}
-  DumpProjections(const ActionOptions&);
+  explicit DumpProjections(const ActionOptions&);
   static void registerKeywords(Keywords& keys);
   void apply(){}
   void update();
diff --git a/src/generic/EffectiveEnergyDrift.cpp b/src/generic/EffectiveEnergyDrift.cpp
index 042e98379..7ac256be1 100644
--- a/src/generic/EffectiveEnergyDrift.cpp
+++ b/src/generic/EffectiveEnergyDrift.cpp
@@ -108,7 +108,7 @@ public ActionPilot{
   bool isFirstStep;
 
 public:
-  EffectiveEnergyDrift(const ActionOptions&);
+  explicit EffectiveEnergyDrift(const ActionOptions&);
   ~EffectiveEnergyDrift();
 
   static void registerKeywords( Keywords& keys );
diff --git a/src/generic/FitToTemplate.cpp b/src/generic/FitToTemplate.cpp
index 035e6a740..20c6683c5 100644
--- a/src/generic/FitToTemplate.cpp
+++ b/src/generic/FitToTemplate.cpp
@@ -96,7 +96,7 @@ class FitToTemplate:
   Vector center;
   Vector shift;
 public:
-  FitToTemplate(const ActionOptions&ao);
+  explicit FitToTemplate(const ActionOptions&ao);
   static void registerKeywords( Keywords& keys );
   void calculate();
   void apply();
diff --git a/src/generic/Flush.cpp b/src/generic/Flush.cpp
index d53419543..ab8eba228 100644
--- a/src/generic/Flush.cpp
+++ b/src/generic/Flush.cpp
@@ -59,7 +59,7 @@ class Flush:
   public ActionPilot
 {
 public:
-  Flush(const ActionOptions&ao):
+  explicit Flush(const ActionOptions&ao):
     Action(ao),
     ActionPilot(ao)
   {
diff --git a/src/generic/Group.cpp b/src/generic/Group.cpp
index 1e4b539b2..372e9c86d 100644
--- a/src/generic/Group.cpp
+++ b/src/generic/Group.cpp
@@ -123,7 +123,7 @@ class Group:
 {
 
 public:
-  Group(const ActionOptions&ao);
+  explicit Group(const ActionOptions&ao);
   ~Group();
   static void registerKeywords( Keywords& keys );
   void calculate(){}
diff --git a/src/generic/Include.cpp b/src/generic/Include.cpp
index 183d0f4eb..ae3f216fb 100644
--- a/src/generic/Include.cpp
+++ b/src/generic/Include.cpp
@@ -68,7 +68,7 @@ class Include :
 {
 public:
   static void registerKeywords( Keywords& keys );
-  Include(const ActionOptions&ao);
+  explicit Include(const ActionOptions&ao);
   void calculate(){}
   void apply(){}
 };
diff --git a/src/generic/Print.cpp b/src/generic/Print.cpp
index a9cb23990..b1bd026f5 100644
--- a/src/generic/Print.cpp
+++ b/src/generic/Print.cpp
@@ -71,7 +71,7 @@ public ActionWithArguments
 public:
   void calculate(){}
   void prepare();
-  Print(const ActionOptions&);
+  explicit Print(const ActionOptions&);
   static void registerKeywords(Keywords& keys);
   void apply(){}
   void update();
diff --git a/src/generic/RandomExchanges.cpp b/src/generic/RandomExchanges.cpp
index 9dc089c1b..b971e15ba 100644
--- a/src/generic/RandomExchanges.cpp
+++ b/src/generic/RandomExchanges.cpp
@@ -77,7 +77,7 @@ class RandomExchanges:
 {
 public:
   static void registerKeywords( Keywords& keys );
-  RandomExchanges(const ActionOptions&ao);
+  explicit RandomExchanges(const ActionOptions&ao);
   void calculate(){}
   void apply(){}
 };
diff --git a/src/generic/Read.cpp b/src/generic/Read.cpp
index 6444d7da3..80930b340 100644
--- a/src/generic/Read.cpp
+++ b/src/generic/Read.cpp
@@ -74,7 +74,7 @@ private:
   std::vector<Value*> readvals;
 public:
   static void registerKeywords( Keywords& keys );
-  Read(const ActionOptions&);
+  explicit Read(const ActionOptions&);
   ~Read();
   void prepare();
   void apply(){}
diff --git a/src/generic/Time.cpp b/src/generic/Time.cpp
index df799928c..6660b9b03 100644
--- a/src/generic/Time.cpp
+++ b/src/generic/Time.cpp
@@ -47,7 +47,7 @@ PRINT ARG=t1
 class Time : public ActionWithValue {
 public:
   static void registerKeywords( Keywords& keys );
-  Time(const ActionOptions&);
+  explicit Time(const ActionOptions&);
 // active methods:
   virtual void calculate();
   virtual void apply(){}
diff --git a/src/generic/WholeMolecules.cpp b/src/generic/WholeMolecules.cpp
index 6495cc672..b7f277bd4 100644
--- a/src/generic/WholeMolecules.cpp
+++ b/src/generic/WholeMolecules.cpp
@@ -109,7 +109,7 @@ class WholeMolecules:
 {
   vector<vector<AtomNumber> > groups;
 public:
-  WholeMolecules(const ActionOptions&ao);
+  explicit WholeMolecules(const ActionOptions&ao);
   static void registerKeywords( Keywords& keys );
   void calculate();
   void apply(){}
diff --git a/src/generic/WrapAround.cpp b/src/generic/WrapAround.cpp
index d17901a5f..f0e308e12 100644
--- a/src/generic/WrapAround.cpp
+++ b/src/generic/WrapAround.cpp
@@ -160,7 +160,7 @@ class WrapAround:
   vector<AtomNumber> reference;
   unsigned groupby;
 public:
-  WrapAround(const ActionOptions&ao);
+  explicit WrapAround(const ActionOptions&ao);
   static void registerKeywords( Keywords& keys );
   void calculate();
   void apply(){}
diff --git a/src/imd/ActionIMD.cpp b/src/imd/ActionIMD.cpp
index 488dbcb00..7fd6a08d2 100644
--- a/src/imd/ActionIMD.cpp
+++ b/src/imd/ActionIMD.cpp
@@ -84,7 +84,7 @@ public:
   static void registerKeywords( Keywords& keys );
   void calculate();
   void apply();
-  IMD(const ActionOptions&);
+  explicit IMD(const ActionOptions&);
   ~IMD(){};
 };
 
diff --git a/src/manyrestraints/ManyRestraintsBase.h b/src/manyrestraints/ManyRestraintsBase.h
index 2cf2b38ee..e13d2775b 100644
--- a/src/manyrestraints/ManyRestraintsBase.h
+++ b/src/manyrestraints/ManyRestraintsBase.h
@@ -42,7 +42,7 @@ private:
   vesselbase::ActionWithVessel* aves;
 public:
   static void registerKeywords( Keywords& keys );
-  ManyRestraintsBase(const ActionOptions&);
+  explicit ManyRestraintsBase(const ActionOptions&);
   bool isPeriodic(){ return false; }
   unsigned getNumberOfDerivatives();
 /// Routines that have to be defined so as not to have problems with virtual methods
diff --git a/src/manyrestraints/UWalls.cpp b/src/manyrestraints/UWalls.cpp
index 0fda53ec7..b76f1213a 100644
--- a/src/manyrestraints/UWalls.cpp
+++ b/src/manyrestraints/UWalls.cpp
@@ -68,7 +68,7 @@ private:
   double offset;
 public:
   static void registerKeywords( Keywords& keys );
-  UWalls( const ActionOptions& );
+  explicit UWalls( const ActionOptions& );
   double calcPotential( const double& val, double& df ) const ;
 };
 
diff --git a/src/mapping/Mapping.h b/src/mapping/Mapping.h
index 855f91576..4891a5932 100644
--- a/src/mapping/Mapping.h
+++ b/src/mapping/Mapping.h
@@ -65,7 +65,7 @@ protected:
   ReferenceConfiguration* getReferenceConfiguration( const unsigned& ifunc );
 public:
   static void registerKeywords( Keywords& keys );
-  Mapping(const ActionOptions&);
+  explicit Mapping(const ActionOptions&);
   ~Mapping();
 /// Overload the virtual functions that appear in both ActionAtomistic and ActionWithArguments
   void turnOnDerivatives();
diff --git a/src/mapping/PCAVars.cpp b/src/mapping/PCAVars.cpp
index aaf1ad0d1..d06fd3a2d 100644
--- a/src/mapping/PCAVars.cpp
+++ b/src/mapping/PCAVars.cpp
@@ -184,7 +184,7 @@ private:
   std::vector<double> forces, forcesToApply;
 public:
   static void registerKeywords( Keywords& keys );
-  PCAVars(const ActionOptions&);
+  explicit PCAVars(const ActionOptions&);
   ~PCAVars();
   unsigned getNumberOfDerivatives();
   void lockRequests();
diff --git a/src/mapping/Path.cpp b/src/mapping/Path.cpp
index 51fa4f81f..bcbc30191 100644
--- a/src/mapping/Path.cpp
+++ b/src/mapping/Path.cpp
@@ -58,7 +58,7 @@ namespace mapping{
 class Path : public PathBase {
 public:
   static void registerKeywords( Keywords& keys );
-  Path(const ActionOptions&);
+  explicit Path(const ActionOptions&);
 };
 
 PLUMED_REGISTER_ACTION(Path,"PATH")
diff --git a/src/mapping/PathBase.h b/src/mapping/PathBase.h
index da36cd41a..0ae402810 100644
--- a/src/mapping/PathBase.h
+++ b/src/mapping/PathBase.h
@@ -32,7 +32,7 @@ private:
   double lambda;
 public:
   static void registerKeywords( Keywords& keys );
-  PathBase(const ActionOptions&);
+  explicit PathBase(const ActionOptions&);
   double getLambda();
   void calculate();
   void performTask( const unsigned& , const unsigned& , MultiValue& ) const ;
diff --git a/src/mapping/PropertyMap.cpp b/src/mapping/PropertyMap.cpp
index 8c82d6396..15d9a2de6 100644
--- a/src/mapping/PropertyMap.cpp
+++ b/src/mapping/PropertyMap.cpp
@@ -51,7 +51,7 @@ namespace mapping{
 class PropertyMap : public PathBase {
 public:
   static void registerKeywords( Keywords& keys );
-  PropertyMap(const ActionOptions&);
+  explicit PropertyMap(const ActionOptions&);
 };
 
 PLUMED_REGISTER_ACTION(PropertyMap,"GPROPERTYMAP")
diff --git a/src/mapping/SpathVessel.cpp b/src/mapping/SpathVessel.cpp
index 6a3a6c7b4..b06e3b66d 100644
--- a/src/mapping/SpathVessel.cpp
+++ b/src/mapping/SpathVessel.cpp
@@ -34,7 +34,7 @@ private:
 public:
   static void registerKeywords( Keywords& keys );
   static void reserveKeyword( Keywords& keys );
-  SpathVessel( const vesselbase::VesselOptions& da );
+  explicit SpathVessel( const vesselbase::VesselOptions& da );
   std::string value_descriptor();
   void prepare();
   bool calculate( const unsigned& current, MultiValue& myvals, std::vector<double>& buffer, std::vector<unsigned>& der_index ) const ;
diff --git a/src/mapping/ZpathVessel.cpp b/src/mapping/ZpathVessel.cpp
index d10d5e5a9..f492a5066 100644
--- a/src/mapping/ZpathVessel.cpp
+++ b/src/mapping/ZpathVessel.cpp
@@ -32,7 +32,7 @@ private:
 public:
   static void registerKeywords( Keywords& keys );
   static void reserveKeyword( Keywords& keys );
-  ZpathVessel( const vesselbase::VesselOptions& da );
+  explicit ZpathVessel( const vesselbase::VesselOptions& da );
   std::string value_descriptor();
   double calcTransform( const double& val, double& dv ) const ;
   double finalTransform( const double& val, double& dv );
diff --git a/src/multicolvar/ActionVolume.h b/src/multicolvar/ActionVolume.h
index e8c209e6c..1171179ae 100644
--- a/src/multicolvar/ActionVolume.h
+++ b/src/multicolvar/ActionVolume.h
@@ -50,7 +50,7 @@ protected:
   std::string getKernelType() const ;
 public:
   static void registerKeywords( Keywords& keys );
-  ActionVolume(const ActionOptions&);
+  explicit ActionVolume(const ActionOptions&);
 /// Get the number of quantities that are calculated each time
   virtual unsigned getNumberOfQuantities();
 /// Calculate whats in the volume
diff --git a/src/multicolvar/AdjacencyMatrixAction.h b/src/multicolvar/AdjacencyMatrixAction.h
index 39a96a3a6..6cf1b667d 100644
--- a/src/multicolvar/AdjacencyMatrixAction.h
+++ b/src/multicolvar/AdjacencyMatrixAction.h
@@ -63,7 +63,7 @@ protected:
   void addDerivativesOnMatrixElement( const unsigned& ielem, const unsigned& jrow, const double& df, Matrix<double>& der );
 public:
   static void registerKeywords( Keywords& keys );
-  AdjacencyMatrixAction(const ActionOptions&);
+  explicit AdjacencyMatrixAction(const ActionOptions&);
   double compute( const unsigned& tindex, AtomValuePack& myatoms ) const ;
   void calculateWeight( AtomValuePack& myatoms ) const ;
   void doJobsRequiredBeforeTaskList();
diff --git a/src/multicolvar/AdjacencyMatrixVessel.h b/src/multicolvar/AdjacencyMatrixVessel.h
index 1d1f12d29..373d390d8 100644
--- a/src/multicolvar/AdjacencyMatrixVessel.h
+++ b/src/multicolvar/AdjacencyMatrixVessel.h
@@ -39,7 +39,7 @@ private:
 public:
   static void registerKeywords( Keywords& keys );
 /// Constructor
-  AdjacencyMatrixVessel( const vesselbase::VesselOptions& );
+  explicit AdjacencyMatrixVessel( const vesselbase::VesselOptions& );
 /// Ensures we use less memory for buffer in final loop
   void setBufferStart( unsigned& start );
 /// Ensures that finish is set properly
diff --git a/src/multicolvar/AlphaBeta.cpp b/src/multicolvar/AlphaBeta.cpp
index b203e5b55..4e332d827 100644
--- a/src/multicolvar/AlphaBeta.cpp
+++ b/src/multicolvar/AlphaBeta.cpp
@@ -97,7 +97,7 @@ private:
   std::vector<double> target;
 public:
   static void registerKeywords( Keywords& keys );
-  AlphaBeta(const ActionOptions&);
+  explicit AlphaBeta(const ActionOptions&);
   virtual double compute( const unsigned& tindex, AtomValuePack& myatoms ) const ;
   bool isPeriodic(){ return false; }
 };
diff --git a/src/multicolvar/Angles.cpp b/src/multicolvar/Angles.cpp
index 2acaf5a32..cf108fd5e 100644
--- a/src/multicolvar/Angles.cpp
+++ b/src/multicolvar/Angles.cpp
@@ -91,7 +91,7 @@ private:
   SwitchingFunction sf2;
 public:
   static void registerKeywords( Keywords& keys );
-  Angles(const ActionOptions&);
+  explicit Angles(const ActionOptions&);
 /// Updates neighbor list
   virtual double compute( const unsigned& tindex, AtomValuePack& ) const ;
 /// Returns the number of coordinates of the field
diff --git a/src/multicolvar/Bridge.cpp b/src/multicolvar/Bridge.cpp
index 0e1e95a13..4148cacb0 100644
--- a/src/multicolvar/Bridge.cpp
+++ b/src/multicolvar/Bridge.cpp
@@ -66,7 +66,7 @@ private:
   SwitchingFunction sf2;
 public:
   static void registerKeywords( Keywords& keys );
-  Bridge(const ActionOptions&);
+  explicit Bridge(const ActionOptions&);
 // active methods:
   virtual double compute( const unsigned& tindex, AtomValuePack& myatoms ) const ;
   void calculateWeight( AtomValuePack& myatoms ) const ;
diff --git a/src/multicolvar/BridgedMultiColvarFunction.h b/src/multicolvar/BridgedMultiColvarFunction.h
index b54a3779c..639c4ab35 100644
--- a/src/multicolvar/BridgedMultiColvarFunction.h
+++ b/src/multicolvar/BridgedMultiColvarFunction.h
@@ -48,7 +48,7 @@ protected:
   void setAtomActive( const unsigned& n );
 public:
   static void registerKeywords( Keywords& keys );
-  BridgedMultiColvarFunction(const ActionOptions&);
+  explicit BridgedMultiColvarFunction(const ActionOptions&);
 /// Get a pointer to the base multicolvar
   MultiColvarBase* getPntrToMultiColvar() const ;
 /// Don't actually clear the derivatives when this is called from plumed main.  
diff --git a/src/multicolvar/CoordinationNumbers.cpp b/src/multicolvar/CoordinationNumbers.cpp
index a87fc6713..ae618b6d5 100644
--- a/src/multicolvar/CoordinationNumbers.cpp
+++ b/src/multicolvar/CoordinationNumbers.cpp
@@ -69,7 +69,7 @@ private:
   SwitchingFunction switchingFunction;
 public:
   static void registerKeywords( Keywords& keys );
-  CoordinationNumbers(const ActionOptions&);
+  explicit CoordinationNumbers(const ActionOptions&);
 // active methods:
   virtual double compute( const unsigned& tindex, AtomValuePack& myatoms ) const ; 
 /// Returns the number of coordinates of the field
diff --git a/src/multicolvar/Density.cpp b/src/multicolvar/Density.cpp
index 32794ad57..6d5f9c201 100644
--- a/src/multicolvar/Density.cpp
+++ b/src/multicolvar/Density.cpp
@@ -52,7 +52,7 @@ PRINT ARG=d1.* FILE=colvar1 FMT=%8.4f
 class Density : public MultiColvar {
 public:
   static void registerKeywords( Keywords& keys );
-  Density(const ActionOptions&);
+  explicit Density(const ActionOptions&);
 // active methods:
   virtual double compute( const unsigned& tindex, AtomValuePack& myatoms ) const ;
   /// Returns the number of coordinates of the field
diff --git a/src/multicolvar/DihedralCorrelation.cpp b/src/multicolvar/DihedralCorrelation.cpp
index 14b72c433..fce6c2a7f 100644
--- a/src/multicolvar/DihedralCorrelation.cpp
+++ b/src/multicolvar/DihedralCorrelation.cpp
@@ -84,7 +84,7 @@ class DihedralCorrelation : public MultiColvar {
 private:
 public:
   static void registerKeywords( Keywords& keys );
-  DihedralCorrelation(const ActionOptions&);
+  explicit DihedralCorrelation(const ActionOptions&);
   virtual double compute( const unsigned& tindex, AtomValuePack& myatoms ) const ;
   bool isPeriodic(){ return false; }
 };
diff --git a/src/multicolvar/Distances.cpp b/src/multicolvar/Distances.cpp
index 9f5b256fe..2bf9839d9 100644
--- a/src/multicolvar/Distances.cpp
+++ b/src/multicolvar/Distances.cpp
@@ -126,7 +126,7 @@ class Distances : public MultiColvar {
 private:
 public:
   static void registerKeywords( Keywords& keys );
-  Distances(const ActionOptions&);
+  explicit Distances(const ActionOptions&);
 // active methods:
   virtual double compute( const unsigned& tindex, AtomValuePack& myatoms ) const ;
 /// Returns the number of coordinates of the field
diff --git a/src/multicolvar/DumpMultiColvar.cpp b/src/multicolvar/DumpMultiColvar.cpp
index 3d1b8bba5..cbcfa0c4b 100644
--- a/src/multicolvar/DumpMultiColvar.cpp
+++ b/src/multicolvar/DumpMultiColvar.cpp
@@ -71,7 +71,7 @@ class DumpMultiColvar:
   MultiColvarBase* mycolv; 
   std::string fmt_xyz;
 public:
-  DumpMultiColvar(const ActionOptions&);
+  explicit DumpMultiColvar(const ActionOptions&);
   ~DumpMultiColvar();
   static void registerKeywords( Keywords& keys );
   void calculate(){}
diff --git a/src/multicolvar/FilterBetween.cpp b/src/multicolvar/FilterBetween.cpp
index 97d071027..f68192022 100644
--- a/src/multicolvar/FilterBetween.cpp
+++ b/src/multicolvar/FilterBetween.cpp
@@ -41,7 +41,7 @@ private:
   HistogramBead hb;
 public:
   static void registerKeywords( Keywords& keys );
-  FilterBetween(const ActionOptions& ao);
+  explicit FilterBetween(const ActionOptions& ao);
   double applyFilter( const double& val, double& df ) const ;
 }; 
 
diff --git a/src/multicolvar/FilterLessThan.cpp b/src/multicolvar/FilterLessThan.cpp
index 17acee918..1db871b80 100644
--- a/src/multicolvar/FilterLessThan.cpp
+++ b/src/multicolvar/FilterLessThan.cpp
@@ -41,7 +41,7 @@ private:
   SwitchingFunction sf;
 public:
   static void registerKeywords( Keywords& keys );
-  FilterLess(const ActionOptions& ao);
+  explicit FilterLess(const ActionOptions& ao);
   double applyFilter( const double& val, double& df ) const ;
 }; 
 
diff --git a/src/multicolvar/FilterMoreThan.cpp b/src/multicolvar/FilterMoreThan.cpp
index d22fb6c96..e462bbf85 100644
--- a/src/multicolvar/FilterMoreThan.cpp
+++ b/src/multicolvar/FilterMoreThan.cpp
@@ -41,7 +41,7 @@ private:
   SwitchingFunction sf;
 public:
   static void registerKeywords( Keywords& keys );
-  FilterMore(const ActionOptions& ao);
+  explicit FilterMore(const ActionOptions& ao);
   double applyFilter( const double& val, double& df ) const ;
 }; 
 
diff --git a/src/multicolvar/InPlaneDistances.cpp b/src/multicolvar/InPlaneDistances.cpp
index a925c6ee8..7bbb9613f 100644
--- a/src/multicolvar/InPlaneDistances.cpp
+++ b/src/multicolvar/InPlaneDistances.cpp
@@ -46,7 +46,7 @@ Calculate distances in the plane perpendicular to an axis
 class InPlaneDistances : public MultiColvar {
 public:
   static void registerKeywords( Keywords& keys );
-  InPlaneDistances(const ActionOptions&);
+  explicit InPlaneDistances(const ActionOptions&);
 // active methods:
   virtual double compute(const unsigned& tindex, AtomValuePack& myatoms ) const ; 
   bool isPeriodic(){ return false; }
diff --git a/src/multicolvar/LocalAverage.cpp b/src/multicolvar/LocalAverage.cpp
index 9bd376550..de7076ce4 100644
--- a/src/multicolvar/LocalAverage.cpp
+++ b/src/multicolvar/LocalAverage.cpp
@@ -88,7 +88,7 @@ private:
   SwitchingFunction switchingFunction;
 public:
   static void registerKeywords( Keywords& keys );
-  LocalAverage(const ActionOptions&);
+  explicit LocalAverage(const ActionOptions&);
 /// We have to overwrite this here
   unsigned getNumberOfQuantities();
 /// Actually do the calculation
diff --git a/src/multicolvar/MultiColvar.h b/src/multicolvar/MultiColvar.h
index fa7359f1d..ed5edaf44 100644
--- a/src/multicolvar/MultiColvar.h
+++ b/src/multicolvar/MultiColvar.h
@@ -58,7 +58,7 @@ protected:
 /// Add a collective variable
   void addColvar( const std::vector<unsigned>& newatoms );
 public:
-  MultiColvar(const ActionOptions&);
+  explicit MultiColvar(const ActionOptions&);
   ~MultiColvar(){}
   static void registerKeywords( Keywords& keys );
 /// Get the position of atom iatom
diff --git a/src/multicolvar/MultiColvarBase.h b/src/multicolvar/MultiColvarBase.h
index b532c4b14..02ecf222c 100644
--- a/src/multicolvar/MultiColvarBase.h
+++ b/src/multicolvar/MultiColvarBase.h
@@ -90,7 +90,7 @@ protected:
 /// Decode indices if there are 2 or 3 atoms involved
   void decodeIndexToAtoms( const unsigned& taskCode, std::vector<unsigned>& atoms ) const ;
 public:
-  MultiColvarBase(const ActionOptions&);
+  explicit MultiColvarBase(const ActionOptions&);
   ~MultiColvarBase(){}
   static void registerKeywords( Keywords& keys );
 /// Turn on the derivatives 
diff --git a/src/multicolvar/MultiColvarDensity.cpp b/src/multicolvar/MultiColvarDensity.cpp
index 8222be59f..ac5cf65e7 100644
--- a/src/multicolvar/MultiColvarDensity.cpp
+++ b/src/multicolvar/MultiColvarDensity.cpp
@@ -70,7 +70,7 @@ class MultiColvarDensity :
   std::vector<double> bw;
   std::vector<unsigned> directions;
 public:
-  MultiColvarDensity(const ActionOptions&);
+  explicit MultiColvarDensity(const ActionOptions&);
   ~MultiColvarDensity();
   static void registerKeywords( Keywords& keys );
   void calculate(){}
diff --git a/src/multicolvar/MultiColvarFilter.h b/src/multicolvar/MultiColvarFilter.h
index 51a889d7f..65004537b 100644
--- a/src/multicolvar/MultiColvarFilter.h
+++ b/src/multicolvar/MultiColvarFilter.h
@@ -37,7 +37,7 @@ to see whether or not they are within a certain range
 class MultiColvarFilter : public BridgedMultiColvarFunction {
 public:
   static void registerKeywords( Keywords& keys );
-  MultiColvarFilter(const ActionOptions&);
+  explicit MultiColvarFilter(const ActionOptions&);
 /// Do everything required to setup the derivatives
   void doJobsRequiredBeforeTaskList();
 /// Get the number of quantities in the colvar
diff --git a/src/multicolvar/MultiColvarFunction.h b/src/multicolvar/MultiColvarFunction.h
index f660b518d..2c377dc69 100644
--- a/src/multicolvar/MultiColvarFunction.h
+++ b/src/multicolvar/MultiColvarFunction.h
@@ -73,7 +73,7 @@ protected:
 /// Return the base multicolvar index that this colvar is a part of
   unsigned getBaseColvarNumber( const unsigned& iatom ) const ;
 public:
-  MultiColvarFunction(const ActionOptions&);
+  explicit MultiColvarFunction(const ActionOptions&);
   static void registerKeywords( Keywords& keys );
 /// Update the atoms that are active
   virtual void updateActiveAtoms( AtomValuePack& myatoms ) const ;
diff --git a/src/multicolvar/NumberOfLinks.cpp b/src/multicolvar/NumberOfLinks.cpp
index 373da6b36..a810206ce 100644
--- a/src/multicolvar/NumberOfLinks.cpp
+++ b/src/multicolvar/NumberOfLinks.cpp
@@ -73,7 +73,7 @@ private:
   SwitchingFunction switchingFunction;
 public:
   static void registerKeywords( Keywords& keys );
-  NumberOfLinks(const ActionOptions&);
+  explicit NumberOfLinks(const ActionOptions&);
 /// Do the stuff with the switching functions
   void calculateWeight( AtomValuePack& myatoms ) const ;
 /// Actually do the calculation
diff --git a/src/multicolvar/Sprint.cpp b/src/multicolvar/Sprint.cpp
index 70c2c163d..f4ceaab18 100644
--- a/src/multicolvar/Sprint.cpp
+++ b/src/multicolvar/Sprint.cpp
@@ -92,7 +92,7 @@ public:
 /// Create manual
   static void registerKeywords( Keywords& keys );
 /// Constructor
-  Sprint(const ActionOptions&);
+  explicit Sprint(const ActionOptions&);
 /// Do the matrix calculation
   void completeCalculation();
 /// Sprint needs its only apply routine as it creates values
diff --git a/src/multicolvar/Torsions.cpp b/src/multicolvar/Torsions.cpp
index 709e79912..88840b5d1 100644
--- a/src/multicolvar/Torsions.cpp
+++ b/src/multicolvar/Torsions.cpp
@@ -74,7 +74,7 @@ Similarly \@psi-4 tells plumed that you want to calculate the \f$\psi\f$ angle o
 class Torsions : public MultiColvar {
 public:
   static void registerKeywords( Keywords& keys );
-  Torsions(const ActionOptions&);
+  explicit Torsions(const ActionOptions&);
   virtual double compute( const unsigned& tindex, AtomValuePack& myatoms ) const ;
   bool isPeriodic(){ return true; }
   void retrieveDomain( std::string& min, std::string& max ){ min="-pi"; max="pi"; }
diff --git a/src/multicolvar/VolumeAround.cpp b/src/multicolvar/VolumeAround.cpp
index 0883d9186..6c21ca28d 100644
--- a/src/multicolvar/VolumeAround.cpp
+++ b/src/multicolvar/VolumeAround.cpp
@@ -76,7 +76,7 @@ private:
   double zlow, zhigh;
 public:
   static void registerKeywords( Keywords& keys );
-  VolumeAround(const ActionOptions& ao);
+  explicit VolumeAround(const ActionOptions& ao);
   void setupRegions();
   double calculateNumberInside( const Vector& cpos, Vector& derivatives, Tensor& vir, std::vector<Vector>& refders ) const ;
 }; 
diff --git a/src/multicolvar/VolumeCavity.cpp b/src/multicolvar/VolumeCavity.cpp
index 00fa6d969..13e467004 100644
--- a/src/multicolvar/VolumeCavity.cpp
+++ b/src/multicolvar/VolumeCavity.cpp
@@ -118,7 +118,7 @@ private:
   std::vector<Tensor> dbi, dcross, dperp;
 public:
   static void registerKeywords( Keywords& keys );
-  VolumeCavity(const ActionOptions& ao);
+  explicit VolumeCavity(const ActionOptions& ao);
   ~VolumeCavity();
   void setupRegions();
   void update();
diff --git a/src/multicolvar/VolumeGradientBase.h b/src/multicolvar/VolumeGradientBase.h
index 3e7735854..926ade012 100644
--- a/src/multicolvar/VolumeGradientBase.h
+++ b/src/multicolvar/VolumeGradientBase.h
@@ -47,7 +47,7 @@ protected:
   void setNumberInVolume( const unsigned& , const unsigned& , const double& , const Vector& , const Tensor& , const std::vector<Vector>& , MultiValue& ) const ;
 public:
   static void registerKeywords( Keywords& keys );
-  VolumeGradientBase(const ActionOptions&);
+  explicit VolumeGradientBase(const ActionOptions&);
 /// Do jobs required before tasks are undertaken
   void doJobsRequiredBeforeTaskList();
 /// Actually do what we are asked
diff --git a/src/multicolvar/VolumeInCylinder.cpp b/src/multicolvar/VolumeInCylinder.cpp
index 6b94cd92a..e7e1f02c9 100644
--- a/src/multicolvar/VolumeInCylinder.cpp
+++ b/src/multicolvar/VolumeInCylinder.cpp
@@ -69,7 +69,7 @@ private:
   SwitchingFunction switchingFunction;
 public:
   static void registerKeywords( Keywords& keys );
-  VolumeInCylinder (const ActionOptions& ao);
+  explicit VolumeInCylinder (const ActionOptions& ao);
   void setupRegions();
   double calculateNumberInside( const Vector& cpos, Vector& derivatives, Tensor& vir, std::vector<Vector>& refders ) const ;
 }; 
diff --git a/src/multicolvar/VolumeTetrapore.cpp b/src/multicolvar/VolumeTetrapore.cpp
index 857eea12d..ec074975c 100644
--- a/src/multicolvar/VolumeTetrapore.cpp
+++ b/src/multicolvar/VolumeTetrapore.cpp
@@ -47,7 +47,7 @@ private:
   std::vector<Tensor> dbi, dcross, dperp;
 public:
   static void registerKeywords( Keywords& keys );
-  VolumeTetrapore(const ActionOptions& ao);
+  explicit VolumeTetrapore(const ActionOptions& ao);
   ~VolumeTetrapore();
   void setupRegions();
   void update();
diff --git a/src/multicolvar/XDistances.cpp b/src/multicolvar/XDistances.cpp
index b9ddf6a4a..0333cf952 100644
--- a/src/multicolvar/XDistances.cpp
+++ b/src/multicolvar/XDistances.cpp
@@ -113,7 +113,7 @@ private:
   unsigned myc;
 public:
   static void registerKeywords( Keywords& keys );
-  XDistances(const ActionOptions&);
+  explicit XDistances(const ActionOptions&);
 // active methods:
   virtual double compute( const unsigned& tindex, AtomValuePack& myatoms ) const ;
 /// Returns the number of coordinates of the field
diff --git a/src/multicolvar/XYDistances.cpp b/src/multicolvar/XYDistances.cpp
index bfccf6e4d..9836c0d10 100644
--- a/src/multicolvar/XYDistances.cpp
+++ b/src/multicolvar/XYDistances.cpp
@@ -87,7 +87,7 @@ private:
   unsigned myc1, myc2;
 public:
   static void registerKeywords( Keywords& keys );
-  XYDistances(const ActionOptions&);
+  explicit XYDistances(const ActionOptions&);
 // active methods:
   virtual double compute( const unsigned& tindex, AtomValuePack& myatoms ) const ;
 /// Returns the number of coordinates of the field
diff --git a/src/reference/ArgumentOnlyDistance.h b/src/reference/ArgumentOnlyDistance.h
index 1ff130c81..2b045564a 100644
--- a/src/reference/ArgumentOnlyDistance.h
+++ b/src/reference/ArgumentOnlyDistance.h
@@ -33,7 +33,7 @@ class Pbc;
 
 class ArgumentOnlyDistance : public ReferenceArguments {
 public:
-  ArgumentOnlyDistance( const ReferenceConfigurationOptions& ro );
+  explicit ArgumentOnlyDistance( const ReferenceConfigurationOptions& ro );
   void read( const PDB& pdb );
   double calc( const std::vector<Vector>& pos, const Pbc& pbc, const std::vector<Value*>& vals, const std::vector<double>& arg, ReferenceValuePack& myder, const bool& squared ) const ;
   double calculate( const std::vector<Value*>& vals, ReferenceValuePack& myder, const bool& squared ) const ;
diff --git a/src/reference/DRMSD.h b/src/reference/DRMSD.h
index 217d48481..c0278ae3c 100644
--- a/src/reference/DRMSD.h
+++ b/src/reference/DRMSD.h
@@ -37,7 +37,7 @@ private:
   std::map< std::pair <unsigned,unsigned> , double> targets;
   void setup_targets();
 public:
-  DRMSD( const ReferenceConfigurationOptions& ro );
+  explicit DRMSD( const ReferenceConfigurationOptions& ro );
 /// This sets upper and lower bounds on distances to be used in DRMSD 
   void setBoundsOnDistances( bool dopbc, double lbound=0.0, double ubound=std::numeric_limits<double>::max( ) );
 /// Check that similar comparisons are being performed - perhaps this is needed ask Davide? GAT
diff --git a/src/reference/Direction.cpp b/src/reference/Direction.cpp
index 2ae232942..9ec05b381 100644
--- a/src/reference/Direction.cpp
+++ b/src/reference/Direction.cpp
@@ -30,7 +30,7 @@ public ReferenceAtoms,
 public ReferenceArguments
 {
 public:
-  Direction( const ReferenceConfigurationOptions& ro );
+  explicit Direction( const ReferenceConfigurationOptions& ro );
   void read( const PDB& );
   double calc( const std::vector<Vector>& pos, const Pbc& pbc, const std::vector<Value*>& vals, const std::vector<double>& args, 
                ReferenceValuePack& myder, const bool& squared ) const ;
diff --git a/src/reference/DotProductDistance.cpp b/src/reference/DotProductDistance.cpp
index f70910716..a613a8a12 100644
--- a/src/reference/DotProductDistance.cpp
+++ b/src/reference/DotProductDistance.cpp
@@ -27,7 +27,7 @@ namespace PLMD {
 
 class DotProductDistance : public ArgumentOnlyDistance {
 public:
-  DotProductDistance( const ReferenceConfigurationOptions& ro );
+  explicit DotProductDistance( const ReferenceConfigurationOptions& ro );
   void read( const PDB& );
   double calc( const std::vector<Value*>& vals, const std::vector<double>& arg, const bool& squared );
 };
diff --git a/src/reference/EuclideanDistance.cpp b/src/reference/EuclideanDistance.cpp
index 6c3275760..ffa027c4d 100644
--- a/src/reference/EuclideanDistance.cpp
+++ b/src/reference/EuclideanDistance.cpp
@@ -26,7 +26,7 @@ namespace PLMD {
 
 class EuclideanDistance : public ArgumentOnlyDistance {
 public:
-  EuclideanDistance( const ReferenceConfigurationOptions& ro );
+  explicit EuclideanDistance( const ReferenceConfigurationOptions& ro );
   bool pcaIsEnabledForThisReference(){ return true; }
   void setupPCAStorage( ReferenceValuePack& mypack ){ mypack.switchOnPCAOption(); }
 };
diff --git a/src/reference/FakeFrame.h b/src/reference/FakeFrame.h
index 79e9e5354..9e90e1eb6 100644
--- a/src/reference/FakeFrame.h
+++ b/src/reference/FakeFrame.h
@@ -30,7 +30,7 @@ class FakeFrame :
 public PLMD::ReferenceConfiguration
 {
 public:
-  FakeFrame( const ReferenceConfigurationOptions& ro ) : ReferenceConfiguration(ro) {}
+  explicit FakeFrame( const ReferenceConfigurationOptions& ro ) : ReferenceConfiguration(ro) {}
   void read( const PDB& ){ plumed_merror("should not be called"); }
   double calc( const std::vector<Vector>& pos, const Pbc& pbc, const std::vector<Value*>& vals, const std::vector<double>& arg, ReferenceValuePack& myder, const bool& squared ) const { 
      plumed_merror("should not be called"); return 1.0; 
diff --git a/src/reference/MahalanobisDistance.cpp b/src/reference/MahalanobisDistance.cpp
index 2c6fd1f45..b10a6a818 100644
--- a/src/reference/MahalanobisDistance.cpp
+++ b/src/reference/MahalanobisDistance.cpp
@@ -26,7 +26,7 @@ namespace PLMD {
 
 class MahalanobisDistance : public ArgumentOnlyDistance {
 public:
-  MahalanobisDistance( const ReferenceConfigurationOptions& ro );
+  explicit MahalanobisDistance( const ReferenceConfigurationOptions& ro );
 };
 
 PLUMED_REGISTER_METRIC(MahalanobisDistance,"MAHALANOBIS")
diff --git a/src/reference/MultiDomainRMSD.h b/src/reference/MultiDomainRMSD.h
index 9e26b7b66..7c60b77b2 100644
--- a/src/reference/MultiDomainRMSD.h
+++ b/src/reference/MultiDomainRMSD.h
@@ -39,7 +39,7 @@ private:
 /// Each of the domains we are calculating the distance from
   std::vector<SingleDomainRMSD*> domains;
 public:
-  MultiDomainRMSD( const ReferenceConfigurationOptions& ro );
+  explicit MultiDomainRMSD( const ReferenceConfigurationOptions& ro );
   ~MultiDomainRMSD();
 /// Read in the input from a pdb
   void read( const PDB& );
diff --git a/src/reference/NormalizedEuclideanDistance.cpp b/src/reference/NormalizedEuclideanDistance.cpp
index 51ee3be55..59f37b552 100644
--- a/src/reference/NormalizedEuclideanDistance.cpp
+++ b/src/reference/NormalizedEuclideanDistance.cpp
@@ -26,7 +26,7 @@ namespace PLMD {
 
 class NormalizedEuclideanDistance : public ArgumentOnlyDistance {
 public:
-  NormalizedEuclideanDistance( const ReferenceConfigurationOptions& ro );
+  explicit NormalizedEuclideanDistance( const ReferenceConfigurationOptions& ro );
 };
 
 PLUMED_REGISTER_METRIC(NormalizedEuclideanDistance,"NORM-EUCLIDEAN")
diff --git a/src/reference/OptimalRMSD.cpp b/src/reference/OptimalRMSD.cpp
index c4f08c962..7670d3280 100644
--- a/src/reference/OptimalRMSD.cpp
+++ b/src/reference/OptimalRMSD.cpp
@@ -31,7 +31,7 @@ private:
   bool fast;
   RMSD myrmsd;
 public:
-  OptimalRMSD(const ReferenceConfigurationOptions& ro);
+  explicit OptimalRMSD(const ReferenceConfigurationOptions& ro);
   void read( const PDB& );
   double calc( const std::vector<Vector>& pos, ReferenceValuePack& myder, const bool& squared ) const ;
   bool pcaIsEnabledForThisReference(){ return true; }
diff --git a/src/reference/RMSDBase.h b/src/reference/RMSDBase.h
index af651bd4b..67a5862ef 100644
--- a/src/reference/RMSDBase.h
+++ b/src/reference/RMSDBase.h
@@ -34,7 +34,7 @@ class RMSDBase : public SingleDomainRMSD {
 // this is to avoid warnings:
   using SingleDomainRMSD::calc;
 public:
-  RMSDBase( const ReferenceConfigurationOptions& ro );
+  explicit RMSDBase( const ReferenceConfigurationOptions& ro );
   double calc( const std::vector<Vector>& pos, const Pbc& pbc, ReferenceValuePack& myder, const bool& squared ) const;
   double calculate( const std::vector<Vector>& pos, ReferenceValuePack& myder, const bool& squared ) const ; 
   virtual double calc( const std::vector<Vector>& pos, ReferenceValuePack& myder, const bool& squared ) const=0;
diff --git a/src/reference/ReferenceArguments.h b/src/reference/ReferenceArguments.h
index 8e17ad41d..3ed35378f 100644
--- a/src/reference/ReferenceArguments.h
+++ b/src/reference/ReferenceArguments.h
@@ -68,7 +68,7 @@ protected:
 /// configuration in CV space
   double calculateArgumentDistance( const std::vector<Value*> & vals, const std::vector<double>& arg, ReferenceValuePack& myder, const bool& squared ) const ;
 public:
-  ReferenceArguments( const ReferenceConfigurationOptions& ro );
+  explicit ReferenceArguments( const ReferenceConfigurationOptions& ro );
 /// Get the number of reference arguments
   unsigned getNumberOfReferenceArguments() const ;
 /// Get the arguments required 
diff --git a/src/reference/ReferenceAtoms.h b/src/reference/ReferenceAtoms.h
index b8ce2d36a..0acbed46d 100644
--- a/src/reference/ReferenceAtoms.h
+++ b/src/reference/ReferenceAtoms.h
@@ -85,7 +85,7 @@ protected:
 /// This does the checks that are always required
   void singleDomainRequests( std::vector<AtomNumber>&, bool disable_checks );
 public:
-  ReferenceAtoms( const ReferenceConfigurationOptions& ro );
+  explicit ReferenceAtoms( const ReferenceConfigurationOptions& ro );
 /// This returns the number of reference atom positions
   unsigned getNumberOfReferencePositions() const ;
 /// This allows us to use a single pos array with RMSD objects using different atom indexes
diff --git a/src/reference/ReferenceConfiguration.h b/src/reference/ReferenceConfiguration.h
index 37509736b..910025f86 100644
--- a/src/reference/ReferenceConfiguration.h
+++ b/src/reference/ReferenceConfiguration.h
@@ -51,7 +51,7 @@ friend class ReferenceConfiguration;
 private:
   std::string tt;
 public:
-  ReferenceConfigurationOptions( const std::string& type );
+  explicit ReferenceConfigurationOptions( const std::string& type );
   bool usingFastOption() const ;
   std::string getMultiRMSDType() const ;
 };
@@ -88,7 +88,7 @@ protected:
 /// Clear the derivatives 
 //  void clearDerivatives();
 public:
-  ReferenceConfiguration( const ReferenceConfigurationOptions& ro );
+  explicit ReferenceConfiguration( const ReferenceConfigurationOptions& ro );
 /// Destructor
   virtual ~ReferenceConfiguration();
 /// Return the name of this metric
diff --git a/src/reference/SimpleRMSD.cpp b/src/reference/SimpleRMSD.cpp
index ad55f6cb0..c718ba980 100644
--- a/src/reference/SimpleRMSD.cpp
+++ b/src/reference/SimpleRMSD.cpp
@@ -29,7 +29,7 @@ class SimpleRMSD : public RMSDBase {
 private:
   RMSD myrmsd;
 public:
-  SimpleRMSD( const ReferenceConfigurationOptions& ro );
+  explicit SimpleRMSD( const ReferenceConfigurationOptions& ro );
   void read( const PDB& );
   double calc( const std::vector<Vector>& pos, ReferenceValuePack& myder, const bool& squared ) const ;
   bool pcaIsEnabledForThisReference(){ return true; }
diff --git a/src/reference/SingleDomainRMSD.h b/src/reference/SingleDomainRMSD.h
index b6487b4da..a74b8d699 100644
--- a/src/reference/SingleDomainRMSD.h
+++ b/src/reference/SingleDomainRMSD.h
@@ -32,7 +32,7 @@ class SingleDomainRMSD : public ReferenceAtoms {
 protected:
   void readReference( const PDB& pdb );
 public:
-  SingleDomainRMSD( const ReferenceConfigurationOptions& ro );
+  explicit SingleDomainRMSD( const ReferenceConfigurationOptions& ro );
 /// Set the reference structure
   virtual void setReferenceAtoms( const std::vector<Vector>& conf, const std::vector<double>& align_in, const std::vector<double>& displace_in );
 /// Calculate
diff --git a/src/secondarystructure/AlphaRMSD.cpp b/src/secondarystructure/AlphaRMSD.cpp
index 029fe7f3b..ee03e440e 100644
--- a/src/secondarystructure/AlphaRMSD.cpp
+++ b/src/secondarystructure/AlphaRMSD.cpp
@@ -80,7 +80,7 @@ ALPHARMSD RESIDUES=all TYPE=DRMSD LESS_THAN={RATIONAL R_0=0.08 NN=8 MM=12} LABEL
 class AlphaRMSD : public SecondaryStructureRMSD {
 public:
   static void registerKeywords( Keywords& keys );
-  AlphaRMSD(const ActionOptions&);
+  explicit AlphaRMSD(const ActionOptions&);
 }; 
 
 PLUMED_REGISTER_ACTION(AlphaRMSD,"ALPHARMSD")
diff --git a/src/secondarystructure/AntibetaRMSD.cpp b/src/secondarystructure/AntibetaRMSD.cpp
index 9cd13e0a9..18cb17796 100644
--- a/src/secondarystructure/AntibetaRMSD.cpp
+++ b/src/secondarystructure/AntibetaRMSD.cpp
@@ -82,7 +82,7 @@ ANTIBETARMSD RESIDUES=all TYPE=DRMSD LESS_THAN={RATIONAL R_0=0.08 NN=8 MM=12} LA
 class AntibetaRMSD : public SecondaryStructureRMSD {
 public:
   static void registerKeywords( Keywords& keys );
-  AntibetaRMSD(const ActionOptions&);
+  explicit AntibetaRMSD(const ActionOptions&);
 }; 
 
 PLUMED_REGISTER_ACTION(AntibetaRMSD,"ANTIBETARMSD")
diff --git a/src/secondarystructure/ParabetaRMSD.cpp b/src/secondarystructure/ParabetaRMSD.cpp
index 235b00d2a..09c5e46a9 100644
--- a/src/secondarystructure/ParabetaRMSD.cpp
+++ b/src/secondarystructure/ParabetaRMSD.cpp
@@ -82,7 +82,7 @@ PARABETARMSD RESIDUES=all TYPE=DRMSD LESS_THAN={RATIONAL R_0=0.08 NN=8 MM=12} LA
 class ParabetaRMSD : public SecondaryStructureRMSD {
 public:
   static void registerKeywords( Keywords& keys );
-  ParabetaRMSD(const ActionOptions&);
+  explicit ParabetaRMSD(const ActionOptions&);
 }; 
 
 PLUMED_REGISTER_ACTION(ParabetaRMSD,"PARABETARMSD")
diff --git a/src/secondarystructure/SecondaryStructureRMSD.h b/src/secondarystructure/SecondaryStructureRMSD.h
index 1e0d00bd5..a7081e882 100644
--- a/src/secondarystructure/SecondaryStructureRMSD.h
+++ b/src/secondarystructure/SecondaryStructureRMSD.h
@@ -72,7 +72,7 @@ protected:
   void setAtomsFromStrands( const unsigned& atom1, const unsigned& atom2 );
 public:
   static void registerKeywords( Keywords& keys );
-  SecondaryStructureRMSD(const ActionOptions&);
+  explicit SecondaryStructureRMSD(const ActionOptions&);
   virtual ~SecondaryStructureRMSD();
   unsigned getNumberOfFunctionsInAction();
   unsigned getNumberOfDerivatives();
diff --git a/src/setup/Load.cpp b/src/setup/Load.cpp
index ba8dbbc64..fa844d9aa 100644
--- a/src/setup/Load.cpp
+++ b/src/setup/Load.cpp
@@ -51,7 +51,7 @@ class Load :
 {
 public:
   static void registerKeywords( Keywords& keys );
-  Load(const ActionOptions&ao);
+  explicit Load(const ActionOptions&ao);
 };
 
 PLUMED_REGISTER_ACTION(Load,"LOAD")
diff --git a/src/setup/Restart.cpp b/src/setup/Restart.cpp
index a8efa8d1f..a5e4f05f1 100644
--- a/src/setup/Restart.cpp
+++ b/src/setup/Restart.cpp
@@ -88,7 +88,7 @@ class Restart :
 {
 public:
   static void registerKeywords( Keywords& keys );
-  Restart(const ActionOptions&ao);
+  explicit Restart(const ActionOptions&ao);
 };
 
 PLUMED_REGISTER_ACTION(Restart,"RESTART")
diff --git a/src/setup/Units.cpp b/src/setup/Units.cpp
index 47b63efac..b80580ee7 100644
--- a/src/setup/Units.cpp
+++ b/src/setup/Units.cpp
@@ -63,7 +63,7 @@ class Units :
 {
 public:
   static void registerKeywords( Keywords& keys );
-  Units(const ActionOptions&ao);
+  explicit Units(const ActionOptions&ao);
 };
 
 PLUMED_REGISTER_ACTION(Units,"UNITS")
diff --git a/src/tools/AtomNumber.h b/src/tools/AtomNumber.h
index 2196c9d93..360d4c171 100644
--- a/src/tools/AtomNumber.h
+++ b/src/tools/AtomNumber.h
@@ -40,9 +40,11 @@ class AtomNumber{
   unsigned index_;
 /// Construct with a given index.
 /// This constructor is kept private to avoid implicit cast.
-  AtomNumber(unsigned);
+  explicit AtomNumber(unsigned);
 public:
 /// Initialize to index=0 (serial=1)
+// The following line triggers a warning in cppcheck,
+// cppcheck-suppress noExplicitConstructor
   AtomNumber();
 /// Returns the serial number
   unsigned serial()const;
diff --git a/src/tools/Communicator.h b/src/tools/Communicator.h
index dbf19c6be..2309cc4ea 100644
--- a/src/tools/Communicator.h
+++ b/src/tools/Communicator.h
@@ -69,27 +69,27 @@ class Communicator{
 /// Init from pointer and size
     template <typename T> Data(T*p,int s): pointer(p), size(s), type(getMPIType<T>()) {}
 /// Init from reference
-    template <typename T> Data(T&p): pointer(&p), size(1), type(getMPIType<T>()) {}
+    template <typename T> explicit Data(T&p): pointer(&p), size(1), type(getMPIType<T>()) {}
 /// Init from pointer to VectorGeneric
-   template <unsigned n> Data(VectorGeneric<n> *p,int s): pointer(p), size(n*s), type(getMPIType<double>()) {}
+   template <unsigned n> explicit Data(VectorGeneric<n> *p,int s): pointer(p), size(n*s), type(getMPIType<double>()) {}
 /// Init from reference to VectorGeneric
-   template <unsigned n> Data(VectorGeneric<n> &p): pointer(&p), size(n), type(getMPIType<double>()) {}
+   template <unsigned n> explicit Data(VectorGeneric<n> &p): pointer(&p), size(n), type(getMPIType<double>()) {}
 /// Init from pointer to TensorGeneric
-   template <unsigned n,unsigned m> Data(TensorGeneric<n,m> *p,int s): pointer(p), size(n*m*s), type(getMPIType<double>()) {}
+   template <unsigned n,unsigned m> explicit Data(TensorGeneric<n,m> *p,int s): pointer(p), size(n*m*s), type(getMPIType<double>()) {}
 /// Init from reference to TensorGeneric
-   template <unsigned n,unsigned m> Data(TensorGeneric<n,m> &p): pointer(&p), size(n*m), type(getMPIType<double>()) {}
+   template <unsigned n,unsigned m> explicit Data(TensorGeneric<n,m> &p): pointer(&p), size(n*m), type(getMPIType<double>()) {}
 /// Init from reference to std::vector
-    template <typename T> Data(std::vector<T>&v){
+    template <typename T> explicit Data(std::vector<T>&v){
       if(v.size()>0){ Data d(&v[0],v.size()); pointer=d.pointer; size=d.size; type=d.type; }
       else { pointer=NULL; size=0; }
     }
 /// Init from reference to PLMD::Matrix
-    template <typename T> Data(Matrix<T>&m ){
+    template <typename T> explicit Data(Matrix<T>&m ){
       if(m.nrows()*m.ncols()>0){ Data d(&m(0,0),m.nrows()*m.ncols()); pointer=d.pointer; size=d.size; type=d.type; }
       else{ pointer=NULL; size=0; } 
     }
 /// Init from reference to std::string
-    Data(std::string&s){
+    explicit Data(std::string&s){
       if(s.size()>0){ Data d(&s[0],s.size()); pointer=d.pointer; size=d.size; type=d.type; }
       else { pointer=NULL; size=0; }
     }
@@ -100,21 +100,21 @@ class Communicator{
     const void*pointer;
     int size;
     MPI_Datatype type;
-    template <typename T> ConstData(const T*p,int s): pointer(p), size(s), type(getMPIType<T>()) {}
-    template <typename T> ConstData(const T&p): pointer(&p), size(1), type(getMPIType<T>()) {}
-    template <unsigned n> ConstData(const VectorGeneric<n> *p,int s): pointer(p), size(n*s), type(getMPIType<double>()) {}
-    template <unsigned n> ConstData(const VectorGeneric<n> &p): pointer(&p), size(n), type(getMPIType<double>()) {}
-    template <unsigned n,unsigned m> ConstData(const TensorGeneric<n,m> *p,int s): pointer(p), size(n*m*s), type(getMPIType<double>()) {}
-    template <unsigned n,unsigned m> ConstData(const TensorGeneric<n,m> &p): pointer(&p), size(n*m), type(getMPIType<double>()) {}
-    template <typename T> ConstData(const std::vector<T>&v){
+    template <typename T> explicit ConstData(const T*p,int s): pointer(p), size(s), type(getMPIType<T>()) {}
+    template <typename T> explicit ConstData(const T&p): pointer(&p), size(1), type(getMPIType<T>()) {}
+    template <unsigned n> explicit ConstData(const VectorGeneric<n> *p,int s): pointer(p), size(n*s), type(getMPIType<double>()) {}
+    template <unsigned n> explicit ConstData(const VectorGeneric<n> &p): pointer(&p), size(n), type(getMPIType<double>()) {}
+    template <unsigned n,unsigned m> explicit ConstData(const TensorGeneric<n,m> *p,int s): pointer(p), size(n*m*s), type(getMPIType<double>()) {}
+    template <unsigned n,unsigned m> explicit ConstData(const TensorGeneric<n,m> &p): pointer(&p), size(n*m), type(getMPIType<double>()) {}
+    template <typename T> explicit ConstData(const std::vector<T>&v){
       if(v.size()>0){ ConstData d(&v[0],v.size()); pointer=d.pointer; size=d.size; type=d.type; }
       else { pointer=NULL; size=0; }
     }
-    template <typename T> ConstData(const Matrix<T>&m ){
+    template <typename T> explicit ConstData(const Matrix<T>&m ){
       if(m.nrows()*m.ncols()>0){ ConstData d(&m(0,0),m.nrows()*m.ncols()); pointer=d.pointer; size=d.size; type=d.type; }
       else{ pointer=NULL; size=0; }
     }
-    ConstData(const std::string&s){
+    explicit ConstData(const std::string&s){
       if(s.size()>0){ ConstData d(&s[0],s.size()); pointer=d.pointer; size=d.size; type=d.type; }
       else { pointer=NULL; size=0; }
     }
diff --git a/src/tools/Exception.h b/src/tools/Exception.h
index aabb5b31e..02c904c34 100644
--- a/src/tools/Exception.h
+++ b/src/tools/Exception.h
@@ -104,7 +104,7 @@ public:
 /// Without message
   Exception();
 /// With message
-  Exception(const std::string&);
+  explicit Exception(const std::string&);
 /// With message plus file, line and function (meant to be used through a preprocessor macro)
   Exception(const std::string&,const std::string&,unsigned,const std::string&);
 /// Returns the error message
diff --git a/src/tools/FileBase.h b/src/tools/FileBase.h
index 948b746d8..6890ef191 100644
--- a/src/tools/FileBase.h
+++ b/src/tools/FileBase.h
@@ -38,7 +38,7 @@ This class just provides things which are common among OFile and IFile
 
 class FileBase{
 /// Copy constructor is disabled (private and unimplemented)
-  FileBase(const FileBase&);
+  explicit FileBase(const FileBase&);
 /// Assignment operator is disabled (private and unimplemented)
   FileBase& operator=(const FileBase&);
 protected:
diff --git a/src/tools/Grid.h b/src/tools/Grid.h
index 9af3c1703..2897d6215 100644
--- a/src/tools/Grid.h
+++ b/src/tools/Grid.h
@@ -42,7 +42,7 @@ class WeightBase{
 class BiasWeight:public WeightBase{
     public:
       double beta,invbeta;
-      BiasWeight(double v){beta=v;invbeta=1./beta;}
+      explicit BiasWeight(double v){beta=v;invbeta=1./beta;}
       double projectInnerLoop(double &input, double &v){return  input+exp(beta*v);}
       double projectOuterLoop(double &v){return -invbeta*std::log(v);}
 };
@@ -50,7 +50,7 @@ class BiasWeight:public WeightBase{
 class ProbWeight:public WeightBase{
     public:
       double beta,invbeta;
-      ProbWeight(double v){beta=v;invbeta=1./beta;}
+      explicit ProbWeight(double v){beta=v;invbeta=1./beta;}
       double projectInnerLoop(double &input, double &v){return  input+v;}
       double projectOuterLoop(double &v){return -invbeta*std::log(v);}
 };
diff --git a/src/tools/Keywords.h b/src/tools/Keywords.h
index 109005406..cfd99fe2f 100644
--- a/src/tools/Keywords.h
+++ b/src/tools/Keywords.h
@@ -38,7 +38,7 @@ class Keywords{
   class KeyType{
   public:
     enum {hidden,compulsory,flag,optional,atoms} style;
-    KeyType( const std::string& type );
+    explicit KeyType( const std::string& type );
     void setStyle( const std::string& type );
     bool isCompulsory() const { return (style==compulsory); }
     bool isFlag() const { return (style==flag); }
diff --git a/src/tools/LinkCells.h b/src/tools/LinkCells.h
index 91563482c..9dc62cdb7 100644
--- a/src/tools/LinkCells.h
+++ b/src/tools/LinkCells.h
@@ -60,7 +60,7 @@ private:
   unsigned findCell( const Vector& pos ) const ;
 public:
 ///
-  LinkCells( Communicator& comm );
+  explicit LinkCells( Communicator& comm );
 /// Have the link cells been enabled
   bool enabled() const ;
 /// Set the value of the cutoff
diff --git a/src/tools/Random.h b/src/tools/Random.h
index ce5dfa51e..63f02acb5 100644
--- a/src/tools/Random.h
+++ b/src/tools/Random.h
@@ -44,7 +44,7 @@ class Random{
 	int idum;
 	std::string name;
 public:
-	Random(const std::string & name=noname);
+	explicit Random(const std::string & name=noname);
 	void setSeed(int idum);
 	double RandU01();
 	double U01();
diff --git a/src/vatom/COM.cpp b/src/vatom/COM.cpp
index 29b00201f..30795d971 100644
--- a/src/vatom/COM.cpp
+++ b/src/vatom/COM.cpp
@@ -71,7 +71,7 @@ class COM:
 {
   bool nopbc;
 public:
-  COM(const ActionOptions&ao);
+  explicit COM(const ActionOptions&ao);
   void calculate();
   static void registerKeywords( Keywords& keys );
 };
diff --git a/src/vatom/Center.cpp b/src/vatom/Center.cpp
index 7660fef6a..326bd3c31 100644
--- a/src/vatom/Center.cpp
+++ b/src/vatom/Center.cpp
@@ -81,7 +81,7 @@ class Center:
   bool weight_mass;
   bool nopbc;
 public:
-  Center(const ActionOptions&ao);
+  explicit Center(const ActionOptions&ao);
   void calculate();
   static void registerKeywords( Keywords& keys );
 };
diff --git a/src/vatom/Ghost.cpp b/src/vatom/Ghost.cpp
index 9efd2209e..b8873b75c 100644
--- a/src/vatom/Ghost.cpp
+++ b/src/vatom/Ghost.cpp
@@ -56,7 +56,7 @@ class Ghost:
 {
   vector<double> coord;
 public:
-  Ghost(const ActionOptions&ao);
+  explicit Ghost(const ActionOptions&ao);
   void calculate();
   static void registerKeywords( Keywords& keys );
 };
diff --git a/src/vesselbase/ActionWithInputVessel.h b/src/vesselbase/ActionWithInputVessel.h
index 2313b6393..0b94300ee 100644
--- a/src/vesselbase/ActionWithInputVessel.h
+++ b/src/vesselbase/ActionWithInputVessel.h
@@ -47,7 +47,7 @@ protected:
 public:
 /// Registers the list of keywords
   static void registerKeywords( Keywords& keys );
-  ActionWithInputVessel(const ActionOptions&);
+  explicit ActionWithInputVessel(const ActionOptions&);
   virtual ~ActionWithInputVessel(){}
 /// Calculate the numerical derivatives
 /// N.B. only pass an ActionWithValue to this routine if you know exactly what you 
diff --git a/src/vesselbase/ActionWithVessel.h b/src/vesselbase/ActionWithVessel.h
index 56d4e38a2..a23638b62 100644
--- a/src/vesselbase/ActionWithVessel.h
+++ b/src/vesselbase/ActionWithVessel.h
@@ -144,7 +144,7 @@ protected:
   void addTaskToList( const unsigned& taskCode );
 public:
   static void registerKeywords(Keywords& keys);
-  ActionWithVessel(const ActionOptions&ao);
+  explicit ActionWithVessel(const ActionOptions&ao);
   ~ActionWithVessel();
   void unlockContributors();
   void lockContributors();
diff --git a/src/vesselbase/AltMin.cpp b/src/vesselbase/AltMin.cpp
index b2c423b03..4dc0418d3 100644
--- a/src/vesselbase/AltMin.cpp
+++ b/src/vesselbase/AltMin.cpp
@@ -31,7 +31,7 @@ private:
 public:
   static void registerKeywords( Keywords& keys );
   static void reserveKeyword( Keywords& keys );
-  AltMin( const vesselbase::VesselOptions& da );
+  explicit AltMin( const vesselbase::VesselOptions& da );
   std::string value_descriptor();
   double calcTransform( const double& val, double& dv ) const ;
   double finalTransform( const double& val, double& dv );
diff --git a/src/vesselbase/Between.h b/src/vesselbase/Between.h
index ed665c257..a5388b188 100644
--- a/src/vesselbase/Between.h
+++ b/src/vesselbase/Between.h
@@ -34,7 +34,7 @@ private:
 public:
   static void registerKeywords( Keywords& keys );
   static void reserveKeyword( Keywords& keys );
-  Between( const VesselOptions& da );
+  explicit Between( const VesselOptions& da );
   std::string value_descriptor();
   double calcTransform( const double& val, double& dv ) const ;
   double getCutoff();
diff --git a/src/vesselbase/BridgeVessel.h b/src/vesselbase/BridgeVessel.h
index 34880bcf3..8a9ad99b1 100644
--- a/src/vesselbase/BridgeVessel.h
+++ b/src/vesselbase/BridgeVessel.h
@@ -45,7 +45,7 @@ private:
   ActionWithVessel* myOutputAction;
   ActionWithValue* myOutputValues;
 public:
-  BridgeVessel( const VesselOptions& );
+  explicit BridgeVessel( const VesselOptions& );
 /// Does this have derivatives
   bool hasDerivatives();
 /// Resize the quantities in the vessel
diff --git a/src/vesselbase/FunctionVessel.h b/src/vesselbase/FunctionVessel.h
index aafa5836f..cc7cb816a 100644
--- a/src/vesselbase/FunctionVessel.h
+++ b/src/vesselbase/FunctionVessel.h
@@ -48,7 +48,7 @@ protected:
   bool usetol;
 public:
   static void registerKeywords( Keywords& keys );
-  FunctionVessel( const VesselOptions& );
+  explicit FunctionVessel( const VesselOptions& );
 /// This does the resizing of the buffer
   virtual void resize();
 /// Do the calcualtion
diff --git a/src/vesselbase/Highest.cpp b/src/vesselbase/Highest.cpp
index ef9358f48..97fdb7e09 100644
--- a/src/vesselbase/Highest.cpp
+++ b/src/vesselbase/Highest.cpp
@@ -29,7 +29,7 @@ class Highest : public OrderingVessel {
 public:
   static void registerKeywords( Keywords& keys );
   static void reserveKeyword( Keywords& keys );
-  Highest( const VesselOptions& da );
+  explicit Highest( const VesselOptions& da );
   std::string value_descriptor();
   bool compare( const double& , const double& );
 };
diff --git a/src/vesselbase/Histogram.cpp b/src/vesselbase/Histogram.cpp
index 106618adf..0a06789eb 100644
--- a/src/vesselbase/Histogram.cpp
+++ b/src/vesselbase/Histogram.cpp
@@ -30,7 +30,7 @@ class Histogram : public ShortcutVessel {
 public:
   static void registerKeywords( Keywords& keys );
   static void reserveKeyword( Keywords& keys );
-  Histogram( const VesselOptions& da );
+  explicit Histogram( const VesselOptions& da );
 };
 
 PLUMED_REGISTER_VESSEL(Histogram,"HISTOGRAM")
diff --git a/src/vesselbase/LessThan.h b/src/vesselbase/LessThan.h
index 97fbecb53..eade2002a 100644
--- a/src/vesselbase/LessThan.h
+++ b/src/vesselbase/LessThan.h
@@ -35,7 +35,7 @@ private:
 public:
   static void registerKeywords( Keywords& keys );
   static void reserveKeyword( Keywords& keys ); 
-  LessThan( const VesselOptions& da );
+  explicit LessThan( const VesselOptions& da );
   std::string value_descriptor();
   double calcTransform( const double& val, double& dv ) const ;
   double getCutoff();
diff --git a/src/vesselbase/Lowest.cpp b/src/vesselbase/Lowest.cpp
index 769564dcb..7564cc651 100644
--- a/src/vesselbase/Lowest.cpp
+++ b/src/vesselbase/Lowest.cpp
@@ -29,7 +29,7 @@ class Lowest : public OrderingVessel {
 public:
   static void registerKeywords( Keywords& keys );
   static void reserveKeyword( Keywords& keys );
-  Lowest( const VesselOptions& da );
+  explicit Lowest( const VesselOptions& da );
   std::string value_descriptor();
   bool compare( const double& , const double& );
 };
diff --git a/src/vesselbase/Max.cpp b/src/vesselbase/Max.cpp
index 72e31be6a..cea5ba246 100644
--- a/src/vesselbase/Max.cpp
+++ b/src/vesselbase/Max.cpp
@@ -32,7 +32,7 @@ private:
 public:
   static void registerKeywords( Keywords& keys );
   static void reserveKeyword( Keywords& keys );
-  Max( const VesselOptions& da );
+  explicit Max( const VesselOptions& da );
   std::string value_descriptor();
   double calcTransform( const double& val, double& dv ) const ;
   double finalTransform( const double& val, double& dv );
diff --git a/src/vesselbase/Mean.cpp b/src/vesselbase/Mean.cpp
index ccf9ef38e..b0575321e 100644
--- a/src/vesselbase/Mean.cpp
+++ b/src/vesselbase/Mean.cpp
@@ -30,7 +30,7 @@ class Mean : public FunctionVessel {
 public:
   static void registerKeywords( Keywords& keys );
   static void reserveKeyword( Keywords& keys );
-  Mean( const vesselbase::VesselOptions& da );
+  explicit Mean( const vesselbase::VesselOptions& da );
   std::string value_descriptor();
   double calcTransform( const double& val, double& dv ) const ;
 };
diff --git a/src/vesselbase/Min.cpp b/src/vesselbase/Min.cpp
index 65c4bf9b9..c1a163d17 100644
--- a/src/vesselbase/Min.cpp
+++ b/src/vesselbase/Min.cpp
@@ -32,7 +32,7 @@ private:
 public:
   static void registerKeywords( Keywords& keys );
   static void reserveKeyword( Keywords& keys );
-  Min( const VesselOptions& da );
+  explicit Min( const VesselOptions& da );
   std::string value_descriptor();
   double calcTransform( const double& val, double& dv ) const ;
   double finalTransform( const double& val, double& dv );
diff --git a/src/vesselbase/Moments.cpp b/src/vesselbase/Moments.cpp
index 89264c0bc..8b1cffd30 100644
--- a/src/vesselbase/Moments.cpp
+++ b/src/vesselbase/Moments.cpp
@@ -37,7 +37,7 @@ private:
 public:
   static void registerKeywords( Keywords& keys );
   static void reserveKeyword( Keywords& keys );
-  Moments( const vesselbase::VesselOptions& da );
+  explicit Moments( const vesselbase::VesselOptions& da );
   std::string description();
   void resize();
   void finish( const std::vector<double>& buffer );
diff --git a/src/vesselbase/MoreThan.cpp b/src/vesselbase/MoreThan.cpp
index 1372d2fea..5ee472c6f 100644
--- a/src/vesselbase/MoreThan.cpp
+++ b/src/vesselbase/MoreThan.cpp
@@ -34,7 +34,7 @@ private:
 public:
   static void registerKeywords( Keywords& keys );
   static void reserveKeyword( Keywords& keys );
-  MoreThan( const VesselOptions& da );
+  explicit MoreThan( const VesselOptions& da );
   std::string value_descriptor();
   double calcTransform( const double& val, double& dv ) const ;
 };
diff --git a/src/vesselbase/OrderingVessel.h b/src/vesselbase/OrderingVessel.h
index 228b9f926..c4fa9aecc 100644
--- a/src/vesselbase/OrderingVessel.h
+++ b/src/vesselbase/OrderingVessel.h
@@ -37,7 +37,7 @@ private:
   StoreDataVessel* mydata;
 public:
   static void registerKeywords( Keywords& keys );
-  OrderingVessel( const VesselOptions& da );
+  explicit OrderingVessel( const VesselOptions& da );
   void resize();
   bool calculate( const unsigned& current, MultiValue& myvals, std::vector<double>& buffer, std::vector<unsigned>& der_list ) const { return true; }
   void finish( const std::vector<double>& buffer );
diff --git a/src/vesselbase/ShortcutVessel.h b/src/vesselbase/ShortcutVessel.h
index 0e58d50c5..9eeb5ce97 100644
--- a/src/vesselbase/ShortcutVessel.h
+++ b/src/vesselbase/ShortcutVessel.h
@@ -36,7 +36,7 @@ protected:
   void addVessel( const std::string& name, const std::string& intput );  
 public:
   static void registerKeywords( Keywords& keys );
-  ShortcutVessel( const VesselOptions& );
+  explicit ShortcutVessel( const VesselOptions& );
   std::string description(){ return ""; }
   void resize(){ plumed_error(); }
   bool calculate( const unsigned& taskCode, MultiValue& myvals, std::vector<double>& buffer, std::vector<unsigned>& der_index ) const { plumed_error(); }
diff --git a/src/vesselbase/StoreDataVessel.h b/src/vesselbase/StoreDataVessel.h
index 759120c39..f0d367606 100644
--- a/src/vesselbase/StoreDataVessel.h
+++ b/src/vesselbase/StoreDataVessel.h
@@ -80,7 +80,7 @@ protected:
   void setLocalDerivative( const unsigned& ibuf, const double& val );
 public:
   static void registerKeywords( Keywords& keys );
-  StoreDataVessel( const VesselOptions& );
+  explicit StoreDataVessel( const VesselOptions& );
 /// Get the number of values that have been stored
   unsigned getNumberOfStoredValues() const ;
 /// Set a hard cutoff on the weight of an element
diff --git a/src/vesselbase/Sum.cpp b/src/vesselbase/Sum.cpp
index 97861c548..068b8bf3b 100644
--- a/src/vesselbase/Sum.cpp
+++ b/src/vesselbase/Sum.cpp
@@ -29,7 +29,7 @@ class Sum : public FunctionVessel {
 public:
   static void registerKeywords( Keywords& keys );
   static void reserveKeyword( Keywords& keys );
-  Sum( const VesselOptions& da );
+  explicit Sum( const VesselOptions& da );
   std::string value_descriptor();
   double calcTransform( const double& val, double& dv ) const ;
 };
diff --git a/src/vesselbase/ValueVessel.h b/src/vesselbase/ValueVessel.h
index 851767456..9e8b26ed7 100644
--- a/src/vesselbase/ValueVessel.h
+++ b/src/vesselbase/ValueVessel.h
@@ -41,7 +41,7 @@ protected:
   void setOutputValue( const double& val );
 public:
   static void registerKeywords( Keywords& keys );
-  ValueVessel( const VesselOptions& da );
+  explicit ValueVessel( const VesselOptions& da );
   std::string description();
   virtual std::string value_descriptor()=0;
   bool applyForce( std::vector<double>& forces );
diff --git a/src/vesselbase/Vessel.h b/src/vesselbase/Vessel.h
index 304669dc9..6ca8ca297 100644
--- a/src/vesselbase/Vessel.h
+++ b/src/vesselbase/Vessel.h
@@ -128,7 +128,7 @@ public:
 /// Convert the name to the label of the component
   static std::string transformName( const std::string& name );
 /// The constructor
-  Vessel( const VesselOptions& da );
+  explicit Vessel( const VesselOptions& da );
 /// Virtual destructor needed for proper inheritance
   virtual ~Vessel(){}
 /// Return the name
diff --git a/src/wrapper/Plumed.h b/src/wrapper/Plumed.h
index fb6b2ef67..eab4d8d16 100644
--- a/src/wrapper/Plumed.h
+++ b/src/wrapper/Plumed.h
@@ -365,6 +365,9 @@ public:
             will not finalize the corresponding plumed structure.
             It is expected that the FORTRAN code calls plumed_c_finalize for it
 */
+// to have maximum portability of this file I do not use the explicit keyword here
+// I thus add a suppress command for cppcheck
+// cppcheck-suppress noExplicitConstructor
   Plumed(const char*c);
 /**
    Clone a Plumed object from a C plumed structure
@@ -373,7 +376,10 @@ public:
  \attention The Plumed object created in this manner
             will not finalize the corresponding plumed structure.
             It is expected that the C code calls plumed_finalize for it
-*/
+*/ 
+// to have maximum portability of this file I do not use the explicit keyword here
+// I thus add a suppress command for cppcheck
+// cppcheck-suppress noExplicitConstructor
   Plumed(plumed p);
 private:
 /** Copy constructor is disabled (private and unimplemented)
-- 
GitLab