diff --git a/Utils.hpp b/Utils.hpp
index 267e519..c5a2e65 100644
--- a/Utils.hpp
+++ b/Utils.hpp
@@ -104,47 +104,14 @@
                                  armnn::NetworkId networkId,
                                  const armnn::IProfiler* profiler);
 
-template <typename HalModel>
-void ExportNetworkGraphToDotFile(const armnn::IOptimizedNetwork& optimizedNetwork,
-                                 const std::string& dumpDir,
-                                 const HalModel& model)
-{
-    // The dump directory must exist in advance.
-    if (dumpDir.empty())
-    {
-        return;
-    }
+std::string ExportNetworkGraphToDotFile(const armnn::IOptimizedNetwork& optimizedNetwork,
+                                        const std::string& dumpDir);
 
-    // Get the memory address of the model and convert it to a hex string (of at least a '0' character).
-    size_t modelAddress = uintptr_t(&model);
-    std::stringstream ss;
-    ss << std::uppercase << std::hex << std::setfill('0') << std::setw(1) << modelAddress;
-    std::string modelAddressHexString = ss.str();
-
-    // Set the name of the output .dot file.
-    const std::string fileName = boost::str(boost::format("%1%/networkgraph_%2%.dot")
-                                            % dumpDir
-                                            % modelAddressHexString);
-
-    ALOGV("Exporting the optimized network graph to file: %s", fileName.c_str());
-
-    // Write the network graph to a dot file.
-    std::ofstream fileStream;
-    fileStream.open(fileName, std::ofstream::out | std::ofstream::trunc);
-
-    if (!fileStream.good())
-    {
-        ALOGW("Could not open file %s for writing", fileName.c_str());
-        return;
-    }
-
-    if (optimizedNetwork.SerializeToDot(fileStream) != armnn::Status::Success)
-    {
-        ALOGW("An error occurred when writing to file %s", fileName.c_str());
-    }
-}
+void RenameGraphDotFile(const std::string& oldName, const std::string& dumpDir, const armnn::NetworkId networkId);
 
 /// Checks if a tensor info represents a dynamic tensor
 bool IsDynamicTensor(const armnn::TensorInfo& outputInfo);
 
+std::string GetFileTimestamp();
+
 } // namespace armnn_driver
