diff --git a/.github/workflows/github_release.yml b/.github/workflows/github_release.yml
index 2821ee429c84510710d412d6cdb74419a68a27f9..4e80dc00d500ca96f77623e0334437ab824fd851 100644
--- a/.github/workflows/github_release.yml
+++ b/.github/workflows/github_release.yml
@@ -6,8 +6,13 @@ on:
       - '*'
 
 jobs:
+
   release:
     runs-on: ubuntu-latest
+    # OUTPUTS
+    outputs:
+      newtag: ${{ steps.tag.outputs.tag }}
+      uploadurl: ${{ steps.create_release.outputs.upload_url }}
     steps:
       # GET LATEST CODE
       - name: Checkout latest code
@@ -27,6 +32,7 @@ jobs:
         uses: ardalanamini/auto-changelog@master
         with:
           token: ${{ secrets.GITHUB_TOKEN }}
+
       - name: Create Release
         id: create_release
         uses: actions/create-release@latest
@@ -42,26 +48,103 @@ jobs:
           draft: false
           prerelease: false
 
+  main:
+    needs: release
+    runs-on: ubuntu-latest
+    steps:
+      # GET LATEST CODE
+      - name: Checkout latest code
+        uses: actions/checkout@master
+        with:
+          ref: main
+          fetch-depth: 0
+
+      # BUILD PROJECT AND PUBLISH TO PACKAGES
+      - name: Set up JDK 8
+        uses: actions/setup-java@v2
+        with:
+          distribution: 'adopt'
+          java-version: '8'
+
+      - name: Grant execute permission for gradlew
+        run: chmod +x gradlew
+
+      - name: Publish to GitHub Packages
+        env:
+          GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }}
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        run: |
+          NEW_VERSION=$(echo "${{ needs.release.outputs.newtag }}")
+          echo "New version: ${NEW_VERSION}"
+          echo "Github username: ${GITHUB_ACTOR}"
+          ./gradlew about
+          ./gradlew -Pversion=${NEW_VERSION} build --info -x test
+
+      # UPLOAD ASSETS TO RELEASE
+      - name: Upload Release Asset Main Jar
+        id: upload-release-asset
+        uses: actions/upload-release-asset@v1
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        with:
+          upload_url:  ${{ needs.release.outputs.uploadurl }}
+          asset_path: ./build/libs/ExampleAddon-${{ needs.release.outputs.newtag }}.jar
+          asset_name: ExampleAddon-${{ needs.release.outputs.newtag }}.jar
+          asset_content_type: application/jar
+
+      - name: Upload Release Asset Sources Jar
+        id: upload-release-asset-sources
+        uses: actions/upload-release-asset@v1
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        with:
+          upload_url:  ${{ needs.release.outputs.uploadurl }}
+          asset_path: ./build/libs/ExampleAddon-${{ needs.release.outputs.newtag }}-sources.jar
+          asset_name: ExampleAddon-${{ needs.release.outputs.newtag }}-sources.jar
+          asset_content_type: application/jar
+
+      - name: Upload Release Asset Javadoc Jar
+        id: upload-release-asset-javadoc
+        uses: actions/upload-release-asset@v1
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        with:
+          upload_url:  ${{ needs.release.outputs.uploadurl }}
+          asset_path: ./build/libs/ExampleAddon-${{ needs.release.outputs.newtag }}-javadoc.jar
+          asset_name: ExampleAddon-${{ needs.release.outputs.newtag }}-javadoc.jar
+          asset_content_type: application/jar
+
+  alternative:
+    needs: release
+    runs-on: ubuntu-latest
+    steps:
+      # GET LATEST CODE
+      - name: Checkout latest code
+        uses: actions/checkout@master
+        with:
+          ref: alternativeExtensionDeclaration
+          fetch-depth: 0
+
       # BUILD PROJECT AND PUBLISH TO PACKAGES
       - name: Set up JDK 8
         uses: actions/setup-java@v2
         with:
           distribution: 'adopt'
           java-version: '8'
+
       - name: Grant execute permission for gradlew
         run: chmod +x gradlew
+
       - name: Publish to GitHub Packages
         env:
           GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }}
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
         run: |
-          NEW_VERSION=$(echo "${{steps.tag.outputs.tag}}")
+          NEW_VERSION=$(echo "${{ needs.release.outputs.newtag }}")
           echo "New version: ${NEW_VERSION}"
           echo "Github username: ${GITHUB_ACTOR}"
           ./gradlew about
-          ./gradlew -Pversion=${NEW_VERSION} publish --info -x test
-      - name: List files
-        run: ls -ahl build/libs
+          ./gradlew -Pversion=${NEW_VERSION} build --info -x test
 
       # UPLOAD ASSETS TO RELEASE
       - name: Upload Release Asset Main Jar
@@ -70,27 +153,95 @@ jobs:
         env:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
         with:
-          upload_url: ${{ steps.create_release.outputs.upload_url }}
-          asset_path: ./build/libs/serverpackcreatorexampleaddon-${{steps.tag.outputs.tag}}.jar
-          asset_name: serverpackcreatorexampleaddon-${{steps.tag.outputs.tag}}.jar
+          upload_url:  ${{ needs.release.outputs.uploadurl }}
+          asset_path: ./build/libs/AlternativeExtensionDeclaration-${{ needs.release.outputs.newtag }}.jar
+          asset_name: AlternativeExtensionDeclaration-${{ needs.release.outputs.newtag }}.jar
           asset_content_type: application/jar
+
       - name: Upload Release Asset Sources Jar
         id: upload-release-asset-sources
         uses: actions/upload-release-asset@v1
         env:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
         with:
-          upload_url: ${{ steps.create_release.outputs.upload_url }}
-          asset_path: ./build/libs/serverpackcreatorexampleaddon-${{steps.tag.outputs.tag}}-sources.jar
-          asset_name: serverpackcreatorexampleaddon-${{steps.tag.outputs.tag}}-sources.jar
+          upload_url:  ${{ needs.release.outputs.uploadurl }}
+          asset_path: ./build/libs/AlternativeExtensionDeclaration-${{ needs.release.outputs.newtag }}-sources.jar
+          asset_name: AlternativeExtensionDeclaration-${{ needs.release.outputs.newtag }}-sources.jar
           asset_content_type: application/jar
+
+      - name: Upload Release Asset Javadoc Jar
+        id: upload-release-asset-javadoc
+        uses: actions/upload-release-asset@v1
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        with:
+          upload_url:  ${{ needs.release.outputs.uploadurl }}
+          asset_path: ./build/libs/AlternativeExtensionDeclaration-${{ needs.release.outputs.newtag }}-javadoc.jar
+          asset_name: AlternativeExtensionDeclaration-${{ needs.release.outputs.newtag }}-javadoc.jar
+          asset_content_type: application/jar
+
+  tetris:
+    needs: release
+    runs-on: ubuntu-latest
+    steps:
+      # GET LATEST CODE
+      - name: Checkout latest code
+        uses: actions/checkout@master
+        with:
+          ref: tetris
+          fetch-depth: 0
+
+      # BUILD PROJECT AND PUBLISH TO PACKAGES
+      - name: Set up JDK 8
+        uses: actions/setup-java@v2
+        with:
+          distribution: 'adopt'
+          java-version: '8'
+
+      - name: Grant execute permission for gradlew
+        run: chmod +x gradlew
+
+      - name: Publish to GitHub Packages
+        env:
+          GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }}
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        run: |
+          NEW_VERSION=$(echo "${{ needs.release.outputs.newtag }}")
+          echo "New version: ${NEW_VERSION}"
+          echo "Github username: ${GITHUB_ACTOR}"
+          ./gradlew about
+          ./gradlew -Pversion=${NEW_VERSION} build --info -x test
+
+      # UPLOAD ASSETS TO RELEASE
+      - name: Upload Release Asset Main Jar
+        id: upload-release-asset
+        uses: actions/upload-release-asset@v1
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        with:
+          upload_url:  ${{ needs.release.outputs.uploadurl }}
+          asset_path: ./build/libs/Minigame-${{ needs.release.outputs.newtag }}.jar
+          asset_name: Minigame-${{ needs.release.outputs.newtag }}.jar
+          asset_content_type: application/jar
+
+      - name: Upload Release Asset Sources Jar
+        id: upload-release-asset-sources
+        uses: actions/upload-release-asset@v1
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        with:
+          upload_url:  ${{ needs.release.outputs.uploadurl }}
+          asset_path: ./build/libs/Minigame-${{ needs.release.outputs.newtag }}-sources.jar
+          asset_name: Minigame-${{ needs.release.outputs.newtag }}-sources.jar
+          asset_content_type: application/jar
+
       - name: Upload Release Asset Javadoc Jar
         id: upload-release-asset-javadoc
         uses: actions/upload-release-asset@v1
         env:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
         with:
-          upload_url: ${{ steps.create_release.outputs.upload_url }}
-          asset_path: ./build/libs/serverpackcreatorexampleaddon-${{steps.tag.outputs.tag}}-javadoc.jar
-          asset_name: serverpackcreatorexampleaddon-${{steps.tag.outputs.tag}}-javadoc.jar
+          upload_url:  ${{ needs.release.outputs.uploadurl }}
+          asset_path: ./build/libs/Minigame-${{ needs.release.outputs.newtag }}-javadoc.jar
+          asset_name: Minigame-${{ needs.release.outputs.newtag }}-javadoc.jar
           asset_content_type: application/jar
\ No newline at end of file
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 5881a8731fc2a40f86bf32231d966ebeee65ce6f..8baf1c57af528fbc7baddfe5ba7be812d03a5353 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -6,10 +6,80 @@ on:
   workflow_dispatch:
 
 jobs:
-  test:
+  main:
     runs-on: ubuntu-latest
     steps:
       - uses: actions/checkout@v2
+        with:
+          ref: main
+      - name: Set up JDK 8
+        uses: actions/setup-java@v2
+        with:
+          distribution: 'adopt'
+          java-version: '8'
+      - name: Where is Java
+        run: which java
+      - name: Grant execute permission for gradlew
+        run: chmod +x gradlew
+      - name: Build with Gradle
+        run: ./gradlew about build --no-daemon --info
+      - name: List files in libs
+        run: ls -ahl build/libs
+      - uses: actions/upload-artifact@v2
+        with:
+          name: build-artifacts-gradle
+          path: |
+            build/libs/
+            !build/libs/libraries/
+            frontend/dist/spa
+          if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn`
+      - uses: actions/upload-artifact@v2
+        if: failure()
+        with:
+          name: report
+          path: build/reports/tests/test/
+          if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn`
+
+  alternative:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v2
+        with:
+          ref: alternativeExtensionDeclaration
+      - name: Set up JDK 8
+        uses: actions/setup-java@v2
+        with:
+          distribution: 'adopt'
+          java-version: '8'
+      - name: Where is Java
+        run: which java
+      - name: Grant execute permission for gradlew
+        run: chmod +x gradlew
+      - name: Build with Gradle
+        run: ./gradlew about build --no-daemon --info
+      - name: List files in libs
+        run: ls -ahl build/libs
+      - uses: actions/upload-artifact@v2
+        with:
+          name: build-artifacts-gradle
+          path: |
+            build/libs/
+            !build/libs/libraries/
+            frontend/dist/spa
+          if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn`
+      - uses: actions/upload-artifact@v2
+        if: failure()
+        with:
+          name: report
+          path: build/reports/tests/test/
+          if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn`
+
+  tetris:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v2
+        with:
+          ref: tetris
       - name: Set up JDK 8
         uses: actions/setup-java@v2
         with:
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 89255f1f85c6a7ca9c0da8ccbf1c775f88bcf935..e09c03a252da980bf2fbb7ebae9d396bcde90161 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -26,28 +26,6 @@ Gradle Test:
   script:
     - echo "**** Building ServerPackCreator ****"
     - ./gradlew build --info
-    - echo "**** Listing build directory ****"
-    - LC_COLLATE=C ls -ahl --group-directories-first --color=auto
-      build
-    - LC_COLLATE=C ls -ahl --group-directories-first --color=auto
-      build/libs
-    - echo "**** Renaming files to please the eye ****"
-    - mv
-      build/libs/serverpackcreatorexampleaddon.jar
-      build/libs/ServerPackCreatorExampleAddon.jar
-    - mv
-      build/libs/serverpackcreatorexampleaddon-javadoc.jar
-      build/libs/ServerPackCreatorExampleAddon-javadoc.jar
-    - mv
-      build/libs/serverpackcreatorexampleaddon-sources.jar
-      build/libs/ServerPackCreatorExampleAddon-sources.jar
-  artifacts:
-    paths:
-      - build/libs/ServerPackCreatorExampleAddon.jar
-      - build/libs/ServerPackCreatorExampleAddon-javadoc.jar
-      - build/libs/ServerPackCreatorExampleAddon-sources.jar
-      - build/reports/tests/test
-    expire_in: 1 week
   except:
     refs:
       - tags
@@ -70,7 +48,6 @@ Release:
   script:
     - npx semantic-release
   only:
-    - master
     - main
   except:
     refs:
@@ -78,86 +55,6 @@ Release:
     variables:
       - $CI_COMMIT_TITLE =~ /^RELEASE:.+$/
 
-Build Release:
-  image: griefed/baseimage-ubuntu-jdk-8:2.0.3
-  stage: Build Release
-  services:
-    - name: griefed/gitlab-ci-cd:2.0.1
-      alias: docker
-  variables:
-    project_name: $CI_PROJECT_NAME
-    SEMANTIC_RELEASE_PACKAGE: $CI_PROJECT_NAME
-  before_script:
-    - echo "**** Running in $CI_JOB_ID ****"
-    - echo "**** Java location ****"
-    - which java
-    - echo "**** Java version ****"
-    - java -version
-    - echo "**** Allowing execution of gradlew ****"
-    - chmod +x gradlew
-    - echo "**** Ensure clean environment ****"
-    - ./gradlew about
-  script:
-    - echo "**** Building ServerPackCreator ****"
-    - ./gradlew build --info -x test
-    - echo "**** Listing build directory ****"
-    - LC_COLLATE=C ls -ahl --group-directories-first --color=auto
-      build
-    - LC_COLLATE=C ls -ahl --group-directories-first --color=auto
-      build/libs
-    - echo "**** Renaming files to please the eye ****"
-    - mv
-      build/libs/serverpackcreatorexampleaddon.jar
-      build/libs/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.jar
-    - mv
-      build/libs/serverpackcreatorexampleaddon-javadoc.jar
-      build/libs/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}-javadoc.jar
-    - mv
-      build/libs/serverpackcreatorexampleaddon-sources.jar
-      build/libs/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}-sources.jar
-    - LC_COLLATE=C ls -ahl --group-directories-first --color=auto
-      build/libs
-    - echo "**** Uploading packages ****"
-    - 'curl
-      --header "JOB-TOKEN: ${CI_JOB_TOKEN}"
-      --upload-file build/libs/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.jar
-        "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}/${CI_COMMIT_TAG}/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.jar"'
-    - 'curl
-      --header "JOB-TOKEN: ${CI_JOB_TOKEN}"
-      --upload-file build/libs/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}-javadoc.jar
-        "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}/${CI_COMMIT_TAG}/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}-javadoc.jar"'
-    - 'curl
-      --header "JOB-TOKEN: ${CI_JOB_TOKEN}"
-      --upload-file build/libs/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}-sources.jar
-        "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}/${CI_COMMIT_TAG}/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}-sources.jar"'
-    - echo "**** Create asset links ****"
-    - 'curl
-      --request POST
-      --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}"
-      --data tag_name="${CI_COMMIT_TAG}"
-      --data name="${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.jar"
-      --data url="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}/${CI_COMMIT_TAG}/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.jar"
-      --data link_type="package"
-        "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/releases/${CI_COMMIT_TAG}/assets/links"'
-    - 'curl
-      --request POST
-      --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}"
-      --data tag_name="${CI_COMMIT_TAG}"
-      --data name="${CI_PROJECT_NAME}-${CI_COMMIT_TAG}-javadoc.jar"
-      --data url="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}/${CI_COMMIT_TAG}/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}-javadoc.jar"
-      --data link_type="package"
-        "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/releases/${CI_COMMIT_TAG}/assets/links"'
-    - 'curl
-      --request POST
-      --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}"
-      --data tag_name="${CI_COMMIT_TAG}"
-      --data name="${CI_PROJECT_NAME}-${CI_COMMIT_TAG}-sources.jar"
-      --data url="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}/${CI_COMMIT_TAG}/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}-sources.jar"
-      --data link_type="package"
-        "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/releases/${CI_COMMIT_TAG}/assets/links"'
-  only:
-    - tags
-
 pages:
   image: griefed/baseimage-ubuntu-jdk-8:2.0.3
   stage: Documentation
@@ -182,4 +79,4 @@ pages:
   artifacts:
     paths:
       - public
-    expire_in: 1 week
+    expire_in: 1 week
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
index 835692ccd03790fe4ae6a0be1b795df6bd2695cc..8247b072987e144b0dd05e5e2d5b2d172bf7f411 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1 +1 @@
-//rootProject.name = 'serverpackcreatorexampleaddon'
+rootProject.name = 'ExampleAddon'