diff --git a/modcc/cexpr_emit.hpp b/modcc/cexpr_emit.hpp
index c9096a0a3a9794eff344134dda246032da104b62..e52c956b85298ee4a33c3e08dc2bd235aa3f2dd2 100644
--- a/modcc/cexpr_emit.hpp
+++ b/modcc/cexpr_emit.hpp
@@ -12,13 +12,13 @@ public:
         out_(out), fallback_(fallback)
     {}
 
-    virtual void visit(Expression* e) { e->accept(fallback_); }
+    void visit(Expression* e) override { e->accept(fallback_); }
 
-    virtual void visit(UnaryExpression *e)      override;
-    virtual void visit(BinaryExpression *e)     override;
-    virtual void visit(AssignmentExpression *e) override;
-    virtual void visit(PowBinaryExpression *e)  override;
-    virtual void visit(NumberExpression *e)     override;
+    void visit(UnaryExpression *e)      override;
+    void visit(BinaryExpression *e)     override;
+    void visit(AssignmentExpression *e) override;
+    void visit(PowBinaryExpression *e)  override;
+    void visit(NumberExpression *e)     override;
 
 protected:
     std::ostream& out_;
diff --git a/modcc/cprinter.hpp b/modcc/cprinter.hpp
index 2da740fb38b80f0e23b60eb67df8fd3cd387d41a..9c6363225cb5a57788014f8e29301bf7bb600c86 100644
--- a/modcc/cprinter.hpp
+++ b/modcc/cprinter.hpp
@@ -11,22 +11,22 @@ public:
     CPrinter() {}
     explicit CPrinter(Module &m): module_(&m) {}
 
-    virtual void visit(Expression *e)           override;
-    virtual void visit(UnaryExpression *e)      override;
-    virtual void visit(BinaryExpression *e)     override;
-    virtual void visit(NumberExpression *e)     override;
-    virtual void visit(VariableExpression *e)   override;
-    virtual void visit(Symbol *e)               override;
-    virtual void visit(LocalVariable *e)        override;
-    virtual void visit(IndexedVariable *e)      override;
-    virtual void visit(CellIndexedVariable *e)  override;
-    virtual void visit(IdentifierExpression *e) override;
-    virtual void visit(CallExpression *e)       override;
-    virtual void visit(ProcedureExpression *e)  override;
-    virtual void visit(APIMethod *e)            override;
-    virtual void visit(LocalDeclaration *e)     override;
-    virtual void visit(BlockExpression *e)      override;
-    virtual void visit(IfExpression *e)         override;
+    void visit(Expression *e)           override;
+    void visit(UnaryExpression *e)      override;
+    void visit(BinaryExpression *e)     override;
+    void visit(NumberExpression *e)     override;
+    void visit(VariableExpression *e)   override;
+    void visit(Symbol *e)               override;
+    void visit(LocalVariable *e)        override;
+    void visit(IndexedVariable *e)      override;
+    void visit(CellIndexedVariable *e)  override;
+    void visit(IdentifierExpression *e) override;
+    void visit(CallExpression *e)       override;
+    void visit(ProcedureExpression *e)  override;
+    void visit(APIMethod *e)            override;
+    void visit(LocalDeclaration *e)     override;
+    void visit(BlockExpression *e)      override;
+    void visit(IfExpression *e)         override;
 
     std::string text() const {
         return text_.str();
diff --git a/modcc/cudaprinter.hpp b/modcc/cudaprinter.hpp
index d016f23609866e32e7c6170d62c1b1fb89d626a5..af7d9d133bd195e052c7889e3b504fcd737be1cc 100644
--- a/modcc/cudaprinter.hpp
+++ b/modcc/cudaprinter.hpp
@@ -108,7 +108,6 @@ private:
 
     std::string module_name_;
     Module *module_ = nullptr;
-    tok parent_op_ = tok::eq;
 
     TextBuffer interface_;
     TextBuffer impl_;
diff --git a/modcc/module.cpp b/modcc/module.cpp
index aa8b33ae5e95b785b7398ac62b3c3aedba0bc4e6..85030677eb745f8f64737bfd4f7bc3110e732d07 100644
--- a/modcc/module.cpp
+++ b/modcc/module.cpp
@@ -34,15 +34,12 @@ class NrnCurrentRewriter: public BlockRewriterBase {
         return ionKind::none;
     }
 
-    moduleKind kind_;
     bool has_current_update_ = false;
     std::set<std::string> ion_current_vars_;
 
 public:
     using BlockRewriterBase::visit;
 
-    explicit NrnCurrentRewriter(moduleKind kind): kind_(kind) {}
-
     virtual void finalize() override {
         if (has_current_update_) {
             // Initialize current_ as first statement.
@@ -334,7 +331,7 @@ bool Module::semantic() {
         //..........................................................
         // nrn_current : update contributions to currents
         //..........................................................
-        NrnCurrentRewriter nrn_current_rewriter(kind());
+        NrnCurrentRewriter nrn_current_rewriter;
         breakpoint->accept(&nrn_current_rewriter);
         auto nrn_current_block = nrn_current_rewriter.as_block();
         if (!nrn_current_block) {
diff --git a/modcc/simd_printer.hpp b/modcc/simd_printer.hpp
index caca3853064c0813aaf38d59115df41a29a6034c..8208632bf381d947156a95ede4e948ab0edf141b 100644
--- a/modcc/simd_printer.hpp
+++ b/modcc/simd_printer.hpp
@@ -16,6 +16,8 @@
 
 template <simdKind Arch>
 class SimdPrinter: public CPrinter {
+    using CPrinter::visit;
+
 public:
     SimdPrinter(): cprinter_(make_unique<CPrinter>())
     {}
@@ -32,8 +34,8 @@ public:
     void visit(UnaryExpression *e) override;
     void visit(BinaryExpression *e) override;
     void visit(PowBinaryExpression *e) override;
-    void visit(ProcedureExpression *e) override;
     void visit(AssignmentExpression *e) override;
+    void visit(ProcedureExpression *e) override;
     void visit(VariableExpression *e) override;
     void visit(LocalVariable *e) override {
         const std::string& name = e->name();