diff --git a/src/backends/backendsCommon/IBackendInternal.hpp b/src/backends/backendsCommon/IBackendInternal.hpp
index 5316f68..3d94d6e 100644
--- a/src/backends/backendsCommon/IBackendInternal.hpp
+++ b/src/backends/backendsCommon/IBackendInternal.hpp
@@ -59,7 +59,7 @@
     // @deprecated Use "OptimizationViews OptimizeSubgraphView(const SubgraphView&);" instead.
     virtual SubgraphViewUniquePtr OptimizeSubgraphView(const SubgraphView& subgraph, bool& optimizationAttempted) const
     {
-        optimizationAttempted=false;
+        optimizationAttempted = false;
         return nullptr;
     }
 
@@ -67,11 +67,11 @@
     // Override this method with a custom optimization implementation.
     virtual OptimizationViews OptimizeSubgraphView(const SubgraphView& subgraph) const
     {
-        bool attempted=false;
-        SubgraphViewUniquePtr optSubgraph = OptimizeSubgraphView(subgraph, attempted);
+        bool optimizationAttempted = false;
+        SubgraphViewUniquePtr optSubgraph = OptimizeSubgraphView(subgraph, optimizationAttempted);
 
         OptimizationViews result;
-        if (!attempted)
+        if (!optimizationAttempted)
         {
             result.AddUntouchedSubgraph(SubgraphView(subgraph));
         }
@@ -79,7 +79,7 @@
         {
             if (optSubgraph)
             {
-                result.AddSubstituion({*optSubgraph.get(), subgraph});
+                result.AddSubstituion({subgraph, SubgraphView(*optSubgraph.get())});
             }
             else
             {
diff --git a/src/backends/backendsCommon/OptimizationViews.hpp b/src/backends/backendsCommon/OptimizationViews.hpp
index 14296f0..e96c11a 100644
--- a/src/backends/backendsCommon/OptimizationViews.hpp
+++ b/src/backends/backendsCommon/OptimizationViews.hpp
@@ -8,6 +8,7 @@
 
 namespace armnn
 {
+
 class OptimizationViews
 {
 public:
@@ -44,18 +45,25 @@
         m_UntouchedSubgraphs.emplace_back(subgraph);
     }
 
-    Substitutions GetSubstitutions() const { return m_SuccesfulOptimizations; }
-    Subgraphs GetFailedSubgraphs() const { return m_FailedOptimizations; }
-    Subgraphs GetUntouchedSubgraphs() const { return m_UntouchedSubgraphs; }
+    const Substitutions& GetSubstitutions() const { return m_SuccesfulOptimizations; }
+    const Subgraphs& GetFailedSubgraphs() const { return m_FailedOptimizations; }
+    const Subgraphs& GetUntouchedSubgraphs() const { return m_UntouchedSubgraphs; }
+
+    Substitutions& GetSubstitutions() { return m_SuccesfulOptimizations; }
+    Subgraphs& GetFailedSubgraphs() { return m_FailedOptimizations; }
+    Subgraphs& GetUntouchedSubgraphs() { return m_UntouchedSubgraphs; }
+
     bool Validate(const SubgraphView& originalSubgraph) const;
 
-    Graph& GetGraph() { return m_Graph; };
+    Graph& GetGraph() { return m_Graph; }
 
 private:
     Substitutions m_SuccesfulOptimizations;     ///< Proposed substitutions from successful optimizations
     Subgraphs m_FailedOptimizations;            ///< Subgraphs from the original subgraph which cannot be supported
     Subgraphs m_UntouchedSubgraphs;             ///< Subgraphs from the original subgraph which remain unmodified
 
+    /// Graph object used only as a container for any layer generated by the optimization process
     Graph m_Graph;
 };
+
 } //namespace armnn
