diff --git a/CHANGES b/CHANGES
index 1597b32..a48c8ca 100644
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,7 @@ Changes for 3.1.0:
* Fixed issue #63: Context class redesign. Move arguments handling into a Context class.
* Fixed issue #64: Remove build artifacts of samples from installation packages.
* Fixed issue #72: Move the code FileManager class generation code into its own IGenerator implementation.
+* Fixed issue #74: Invalid generated output file name: index.cpptml.cpp.
Changes for 3.0.1:
diff --git a/samples/demo_website/www/index.html.old b/samples/demo_website/www/index.html.old
deleted file mode 100644
index af805eb..0000000
--- a/samples/demo_website/www/index.html.old
+++ /dev/null
@@ -1,74 +0,0 @@
-
-
-
-
-
Welcome to the Nature & Outdoors Blog
-
Immerse yourself in the beauty of nature. Discover breathtaking landscapes, essential hiking tips, and the wonders of wildlife.
-
-
Our goal is to inspire adventure and share knowledge on preserving the great outdoors. From national parks to hidden gems, we've got it all.
-
-
Whether you're a seasoned explorer or a beginner, join us in appreciating the natural world like never before.
-
-
-
-
-
-
-
-
diff --git a/src/bin2cpp/main.cpp b/src/bin2cpp/main.cpp
index 4ccb6ae..4678988 100755
--- a/src/bin2cpp/main.cpp
+++ b/src/bin2cpp/main.cpp
@@ -564,9 +564,8 @@ APP_ERROR_CODES processInputFile(const Context & c, bin2cpp::IGenerator * genera
return APP_ERROR_INPUTFILENOTFOUND;
//prepare output files path
- std::string cppFilename = c.headerFilename;
- ra::strings::Replace(cppFilename, ".hpp", ".cpp");
- ra::strings::Replace(cppFilename, ".h", ".cpp");
+ std::string headerExtention = ra::filesystem::GetFileExtention(c.headerFilename);
+ std::string cppFilename = c.headerFilename.substr(0, c.headerFilename.size() - headerExtention.size()) + "cpp"; // strip out header file's extension and add 'cpp'.
//create a copy of the context.
//we may have already generated files from a previous call to processInputFile().