diff --git a/bvletools.user.js b/bvletools.user.js
index f0ccb67d0f33f0ff76ac9b9b7cf5bf48dea4a3fd..3b6b7fb08721e78e01476913d555fb164c3fb3a4 100644
--- a/bvletools.user.js
+++ b/bvletools.user.js
@@ -57,15 +57,26 @@
         return elem;
     }
 
+    function appendUtilButton(id, text) {
+        $("#content_RB9Buttons").append(generateUtilButtonText(id, text));
+    }
+
+    function timetableToClipboardProcess(data) {
+        var data_str = JSON.stringify(data);
+        console.log(data_str);
+        navigator.clipboard.writeText(data_str);
+        alert("Copied to Clipboard.\n Number of lessons " + data["table"].length);
+    }
+
     $("#widgetsDahsboard .grid-stack")
         .append("\n<div class=\"grid-stack-item ui-draggable ui-resizable ui-resizable-autohide ui-resizable-disabled\" id=\"gs_RB9Buttons\" data-color=\"danger\" data-gs-id=\"gs_RB9Buttons\" data-gs-x=\"8\" data-gs-y=\"2\" data-gs-width=\"4\" data-gs-height=\"2\" data-gs-no-resize=\"yes\">\n        <div class=\"panel panel-danger shadow grid-stack-item-content ui-draggable-handle\">\n            <div class=\"panel-heading\">\n                <table>\n                    <tbody>\n                        <tr class=\"tableheader\">\n                            <td><i style=\"font-size:35px; padding-right:5px; padding-left:5px\" class=\"fa fa fa-wrench \"><\/i><\/td>\n                            <td>\n                                <h3 class=\"panel-title\">Toolkit<\/h3><h5 class=\"panelSubTitle\">Utilities Toolkit<\/h5>\n                            <\/td>\n                        <\/tr>\n                        <tr><\/tr>\n                    <\/tbody>\n                <\/table>\n            <\/div>\n            <div id=\"content_RB9Buttons\" style=\"display:block; width: 100%;padding:0px;\" class=\"ifNoDataInWidget\">\n<\/div>\n        <\/div><div class=\"ui-resizable-handle ui-resizable-se ui-icon ui-icon-gripsmall-diagonal-se\" style=\"z-index: 90; display: none;\"><\/div>\n    <\/div>");
     
     //$("#content_RB9Buttons").append("<span class=\"txtalignCenter\"><a id=\"rb9ButtonGetTTWeek\">Get Timetable (This Week)<\/a><\/span>");
     //$("#content_RB9Buttons").append("<br /><a onclick=\"alert(userGuidingUserId.split('$')[0]);\">Get User ID</a>");
     
-    $("#content_RB9Buttons").append(generateUtilButtonText("rb9ButtonGetTTWeek", "Get Timetable (This Week)"));
-    $("#content_RB9Buttons").append(generateUtilButtonText("rb9ButtonGetTTWeekNext", "Get Timetable (Next Week)"));
-    $("#content_RB9Buttons").append(generateUtilButtonText("rb9ButtonGetUserId", "Get User ID"));
+    appendUtilButton("rb9ButtonGetTTWeek", "Get Timetable (This Week)");
+    appendUtilButton("rb9ButtonGetTTWeekNext", "Get Timetable (Next Week)");
+    appendUtilButton("rb9ButtonGetUserId", "Get User ID");
 
     $("#rb9ButtonGetUserId").on("click", () => {
         var userIdParts = userGuidingUserId.split("$");
@@ -82,10 +93,7 @@
         var url = "https://vle.bromcomcloud.com/Timetable/GetTimeTable?WeekStartDate=" + formatDate(lastSunday) + "&weekEndDate=" + formatDate(nextSaturday) + "&type=1&id=0";
         $.ajax({url: url, method: "POST", dataType: "json"})
             .done((data) => {
-            var data_str = JSON.stringify(data);
-            console.log(data_str);
-            navigator.clipboard.writeText(data_str);
-            alert("Copied to Clipboard. Len(table) = " + data["table"].length);
+            timetableToClipboardProcess(data);
         });
     });
 
@@ -97,10 +105,7 @@
         var url = "https://vle.bromcomcloud.com/Timetable/GetTimeTable?WeekStartDate=" + formatDate(lastSunday) + "&weekEndDate=" + formatDate(nextSaturday) + "&type=1&id=0";
         $.ajax({url: url, method: "POST", dataType: "json"})
             .done((data) => {
-            var data_str = JSON.stringify(data);
-            console.log(data_str);
-            navigator.clipboard.writeText(data_str);
-            alert("Copied to Clipboard.");
+            timetableToClipboardProcess(data);
         });
     });
 })();