diff --git a/include/commandlib.h b/include/commandlib.h
index 210b92647cd25bc566ad93d61d0fbf764ede9899..f7c83153a88cbd467e260d841870a845cd67aea0 100644
--- a/include/commandlib.h
+++ b/include/commandlib.h
@@ -8,7 +8,7 @@ public:
     virtual std::string getName() = 0;
 };
 
-class IDirection
+class IDirection : public virtual ICommand
 {
 public:
     inline static const std::string direction = "Direction";
@@ -16,7 +16,7 @@ public:
     virtual int getDegree() = 0;
 };
 
-class IGear
+class IGear : public virtual ICommand
 {
 public:
     inline static const std::string gear = "Gear";
@@ -25,7 +25,7 @@ public:
     virtual double getDuration() = 0;
 };
 
-class IPause
+class IPause : public virtual ICommand
 {
 public:
     inline static const std::string pause = "Pause";
diff --git a/src/Command.h b/src/Command.h
index 7d17b627d1e206d4aa4f18710185f48846bc63f2..c3850c4888ace9b4f4d7a19bcaa9e5db756126a4 100644
--- a/src/Command.h
+++ b/src/Command.h
@@ -7,7 +7,7 @@
  * @brief Base class for the specific Command implementations
  *  e.g. Gear, Direction and Pause.
  */
-class Command : public ICommand
+class Command : public virtual ICommand
 {
 private:
     std::string name;