diff --git a/generateChangemarks/generateTOC.py b/generateChangemarks/generateTOC.py
index f49915f6e3b532858179827c397a36ed1dd2919f..54e67fcdcf319de8ece8a806b5b7251e0bfeb090 100644
--- a/generateChangemarks/generateTOC.py
+++ b/generateChangemarks/generateTOC.py
@@ -64,7 +64,7 @@ def processDocument(args:argparse.Namespace) -> None:
 	# Read the document
 	headers:list[Tuple[str, int]] = []
 	# Note: We use utf-8 and replace errors to avoid problems with special or unknown characters.
-	with open(args.document, 'r', encoding='utf-8', errors='replace') as f:
+	with open(args.document, 'w', encoding='utf-8', errors='replace') as f:
 		document = f.readlines()
 		for line in document:
 			_l = line.strip()
@@ -78,7 +78,10 @@ def processDocument(args:argparse.Namespace) -> None:
 				# Skip the Contents headline if necessary
 				if (headline := _l.lstrip('#').strip()) == 'Contents' and not args.contents:
 					continue
-				headers.append((headline, level))
+				headers.append((headline, level, prepareTOClink(h[0])))
+				f.write(line+f'\{#{h[2]}\}')
+				continue
+			f.write(line)
 	
 	# Prepare and Print the table of contents
 	toc = '# Contents\n\n'
@@ -91,8 +94,9 @@ def processDocument(args:argparse.Namespace) -> None:
 		heading_link=prepareTOClink(_h)
 		print(_h)
 		print(heading_link)
+		print(h[2])
 		# toc += ' ' * (h[1] * args.indent) + f'[{h[0]}](#{prepareTOClink(h[0])})  \n'
-		toc += ' ' * (h[1] * args.indent) + f'[{_h}](#{heading_link})  \n'
+		toc += ' ' * (h[1] * args.indent) + f'[{_h}](#{h[2]})  \n'
 	
 	toc = re.sub('<[^<]+?>', '', toc)
 	toc += '\n'