diff --git a/wikibot.py b/wikibot.py
index f0d7f4128baed49ea2344b447438f7143929116a..4cc80e4caaeacc5b978b014b5ef386c2ef25bb3d 100644
--- a/wikibot.py
+++ b/wikibot.py
@@ -5,11 +5,14 @@ import datetime
 import argparse
 from xmlrpc.client import ServerProxy as Proxy, Error as wikiError
 
+# regex to change a links target while keeping its display name
+WIKILINKREG = rf"\[\[\s*{{}}\s*\|(.*?)\]\]"
+proxy = Proxy(config.WIKI_API_URL) # TODO
+
 
 def get_time():
     """Return the dokwuikis current time as timestamp."""
-    with Proxy(config.WIKI_API_URL) as proxy:
-        return proxy.dokuwiki.getTime()
+    return proxy.dokuwiki.getTime()
 
 
 def strip_namespace(full_name):
@@ -25,81 +28,85 @@ def strip_namespace(full_name):
 
 def move_page(old_pagename, new_pagename, delete=False):
     """Moves a page, updates links to new page and flags or deletes the old one."""
-    with Proxy(config.WIKI_API_URL) as proxy:
-        # create new page with identical content #
-        page_content = proxy.wiki.getPage(old_pagename)
-        if not page_content:
-            return
-        proxy.wiki.putPage(new_pagename, page_content, {
-                           "sum": "Moved from " + old_pagename})
-        # update back links to new page
-        change_links(old_pagename, new_pagename)
-        # either flag or delete original page #
-        if not delete:
-            proxy.dokuwiki.appendPage(old_pagename, "\n DELETEME This page was moved to " + new_pagename,
-                                      {"sum": "Moved to " + new_pagename + " and marked page for deletion"})
-        else:
-            proxy.wiki.putPage(old_pagename, "", {
-                               "sum": "Moved to " + new_pagename})
-
-
-def move_pages(original_name_regex, new_name_func, delete=False):
+    # create new page with identical content #
+    page_content = proxy.wiki.getPage(old_pagename)
+    if not page_content:
+        return
+    proxy.wiki.putPage(new_pagename, page_content, {
+        "sum": "Moved from " + old_pagename})
+    # update back links to new page
+    change_links(old_pagename, new_pagename)
+    # either flag or delete original page #
+    if not delete:
+        proxy.dokuwiki.appendPage(old_pagename, "\n DELETEME This page was moved to " + new_pagename,
+                                  {"sum": "Moved to " + new_pagename + " and marked page for deletion"})
+    else:
+        proxy.wiki.putPage(old_pagename, "", {
+            "sum": "Moved to " + new_pagename})
+
+
+def get_pages(name_regex):
+    """ Returns all pages which names completly match a given regex."""
+    pages = proxy.dokuwiki.getPagelist("")
+    update_pages = {page for page in pages
+                    if re.fullmatch(name_regex, page.get("id"))}
+    return update_pages
+
+
+def move_pages_regex(original_name_regex, new_name_func, delete=False):
     """ Moves a bunch of pages where the complete name is matched by a given regex and new names are given via a function.
     original_name_regex is a regular expression which the old names have to match completly.
     new_name_func is a function which gets the matched old name as input and returns the new name.
     delete is a boolean flag wether old pages are to be deleted or just marked.
     """
-    with Proxy(config.WIKI_API_URL) as proxy:
-        # move sites #
-        pages = proxy.dokuwiki.getPagelist("")
-        update_pages = {page.get("id"): new_name_func(page.get("id")) for page in pages
-                        if re.fullmatch(original_name_regex, page.get("id"))}
-        for old, new in update_pages.items():
-            page_content = proxy.wiki.getPage(old)
-            proxy.wiki.putPage(new, page_content, {"sum": "Moved from " + old})
-        # bulk update for links #
-        update_backlink_sites = {}
-        for page in update_pages.keys():
-            for link in proxy.wiki.getBackLinks(page):
-                if update_backlink_sites.get(link):
-                    update_backlink_sites[link].append(page)
-                else:
-                    update_backlink_sites[link] = [page]
-        reg = rf"\[\[\s*{{}}\s*\|(.*?)\]\]"
-        def _replacer(new_name): return (
-            lambda matched: "[[" + new_name + "|" + matched.group(1) + "]]")
-        for page_to_update, old_pages in update_backlink_sites.items():
-            page_content = proxy.wiki.getPage(page_to_update)
-            for old_page in old_pages:
-                page_content = re.sub(reg.format(old_page), _replacer(
-                    update_pages[old_page]), page_content)
-            proxy.wiki.putPage(page_to_update, page_content, {
-                               "sum": "Update links due to moving sites"})
-        # either flag or delete original pages #
-        if not delete:
-            for old_page, new_page in update_pages.items():
-                proxy.dokuwiki.appendPage(old_page, "\n\n DELETEME This page was moved to " + new_page,
-                                          {"sum": "Moved to " + new_page + " and marked page for deletion"})
-        else:
-            for old_page, new_page in update_pages.items():
-                proxy.wiki.putPage(
-                    old_page, "", {"sum": "Moved to " + new_page})
+    pages = get_pages(original_name_regex)
+    # move pages #
+    update_pages = {page.get("id"): new_name_func(
+        page.get("id")) for page in pages}
+    for old, new in update_pages.items():
+        page_content = proxy.wiki.getPage(old)
+        proxy.wiki.putPage(new, page_content, {"sum": "Moved from " + old})
+    # bulk update for links #
+    update_backlink_sites = {}
+    for page in update_pages.keys():
+        for link in proxy.wiki.getBackLinks(page):
+            if update_backlink_sites.get(link):
+                update_backlink_sites[link].append(page)
+            else:
+                update_backlink_sites[link] = [page]
+    def _replacer(new_name): return (
+        lambda matched: "[[" + new_name + "|" + matched.group(1) + "]]")
+    for page_to_update, old_pages in update_backlink_sites.items():
+        page_content = proxy.wiki.getPage(page_to_update)
+        for old_page in old_pages:
+            page_content = re.sub(WIKILINKREG.format(old_page), _replacer(
+                update_pages[old_page]), page_content)
+        proxy.wiki.putPage(page_to_update, page_content, {
+            "sum": "Update links due to moving sites"})
+    # either flag or delete original pages #
+    if not delete:
+        for old_page, new_page in update_pages.items():
+            proxy.dokuwiki.appendPage(old_page, "\n\n DELETEME This page was moved to " + new_page,
+                                      {"sum": "Moved to " + new_page + " and marked page for deletion"})
+    else:
+        for old_page, new_page in update_pages.items():
+            proxy.wiki.putPage(
+                old_page, "", {"sum": "Moved to " + new_page})
 
 
 def change_links(old_pagename, new_pagename):
     """Updates pages that link to an old page, to link to new page instead."""
-    with Proxy(config.WIKI_API_URL) as proxy:
-        backLinks = proxy.wiki.getBackLinks(old_pagename)
-        # regex for dokuwiki links we want to replace
-        reg = rf"\[\[\s*{old_pagename}\s*\|(.*?)\]\]"
-
-        def _replacer(matched):
-            return "[[" + new_pagename + "|" + matched.group(1) + "]]"
-        for page in backLinks:
-            content = proxy.wiki.getPage(page)
-            content = re.sub(reg, _replacer, content)
-            proxy.wiki.putPage(
-                page, content, {"sum": "Update links from " + old_pagename + " to " + new_pagename})
+    backLinks = proxy.wiki.getBackLinks(old_pagename)
+    # regex for dokuwiki links we want to replace
+    reg = WIKILINKREG.format(old_pagename)
+
+    def _replacer(matched):
+        return "[[" + new_pagename + "|" + matched.group(1) + "]]"
+    for page in backLinks:
+        content = proxy.wiki.getPage(page)
+        content = re.sub(reg, _replacer, content)
+        proxy.wiki.putPage(
+            page, content, {"sum": "Update links from " + old_pagename + " to " + new_pagename})
 
 
 def find_old_pages(timedelta, namespace=""):
@@ -107,24 +114,22 @@ def find_old_pages(timedelta, namespace=""):
         Used timedelta can be given as datetime.datetime or datetime.timedelta object.
         Optional a namespace can be given to only get old pages from that namespace.
     """
-    with Proxy(config.WIKI_API_URL) as proxy:
-        pages = proxy.dokuwiki.getPagelist(namespace)
-        proxy_time = proxy.dokuwiki.getTime()
-        old_pages = []
-        if type(timedelta) is datetime.timedelta:
-            old_pages = [page for page in pages if proxy_time -
-                         page.get('rev') > timedelta.total_seconds()]
-        elif type(timedelta) is datetime.datetime:
-            old_pages = [page for page in pages if page.get(
-                'rev') < timedelta.timestamp()]
-        return old_pages
+    pages = proxy.dokuwiki.getPagelist(namespace)
+    proxy_time = proxy.dokuwiki.getTime()
+    old_pages = []
+    if type(timedelta) is datetime.timedelta:
+        old_pages = [page for page in pages if proxy_time -
+                     page.get('rev') > timedelta.total_seconds()]
+    elif type(timedelta) is datetime.datetime:
+        old_pages = [page for page in pages if page.get(
+            'rev') < timedelta.timestamp()]
+    return old_pages
 
 
 def mark_page(pagename, message, summary="Marked page"):
     """Puts a message at the beginning of a page"""
-    with Proxy(config.WIKI_API_URL) as proxy:
-        content = proxy.wiki.getPage(pagename)
-        proxy.wiki.putPage(pagename, message+"\n\n"+content, {"sum": summary})
+    content = proxy.wiki.getPage(pagename)
+    proxy.wiki.putPage(pagename, message+"\n\n"+content, {"sum": summary})
 
 
 def mark_old_pages(timedelta, namespace=""):
@@ -135,10 +140,9 @@ def mark_old_pages(timedelta, namespace=""):
     old_pages = find_old_pages(timedelta, namespace)
     message = "FIXME This Page is out of date and should be reviewed\n\n"
     summary = "Marked page due to its age"
-    with Proxy(config.WIKI_API_URL) as proxy:
-        for page in old_pages:
-            if not proxy.wiki.getPage(page.get("id")).startswith("FIXME"):
-                mark_page(page.get("id"), message, summary)
+    for page in old_pages:
+        if not proxy.wiki.getPage(page.get("id")).startswith("FIXME"):
+            mark_page(page.get("id"), message, summary)
 
 
 if __name__ == "__main__":