diff --git a/.idea/artifacts/GameOfLife_jar.xml b/.idea/artifacts/GameOfLife_jar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..00348b5d138a057ff3edeff32e607a18a67767e5
--- /dev/null
+++ b/.idea/artifacts/GameOfLife_jar.xml
@@ -0,0 +1,11 @@
+<component name="ArtifactManager">
+  <artifact type="jar" name="GameOfLife:jar">
+    <output-path>$PROJECT_DIR$/out/artifacts/GameOfLife_jar</output-path>
+    <root id="archive" name="GameOfLife.jar">
+      <element id="module-output" name="GameOfLife" />
+      <element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/glassfish/javax.json/1.1.4/javax.json-1.1.4.jar" path-in-jar="/" />
+      <element id="extracted-dir" path="$MAVEN_REPOSITORY$/javax/json/javax.json-api/1.1.4/javax.json-api-1.1.4.jar" path-in-jar="/" />
+      <element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/apiguardian/apiguardian-api/1.0.0/apiguardian-api-1.0.0.jar" path-in-jar="/" />
+    </root>
+  </artifact>
+</component>
\ No newline at end of file
diff --git a/.idea/jsonSchemas.xml b/.idea/jsonSchemas.xml
new file mode 100644
index 0000000000000000000000000000000000000000..af0d520c3d28a23deee0c2692f82ef61b74850ab
--- /dev/null
+++ b/.idea/jsonSchemas.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="JsonSchemaMappingsProjectConfiguration">
+    <state>
+      <map>
+        <entry key="JSON schema v4">
+          <value>
+            <SchemaInfo>
+              <option name="name" value="JSON schema v4" />
+              <option name="relativePathToSchema" value="http://json-schema.org/draft-04/schema" />
+              <option name="applicationDefined" value="true" />
+              <option name="patterns">
+                <list>
+                  <Item>
+                    <option name="path" value="file://$USER_HOME$/Desktop/demo.json" />
+                  </Item>
+                </list>
+              </option>
+            </SchemaInfo>
+          </value>
+        </entry>
+        <entry key="JSON schema v7">
+          <value>
+            <SchemaInfo>
+              <option name="name" value="JSON schema v7" />
+              <option name="relativePathToSchema" value="http://json-schema.org/draft-07/schema" />
+              <option name="schemaVersion" value="JSON schema version 7" />
+              <option name="applicationDefined" value="true" />
+              <option name="patterns">
+                <list>
+                  <Item>
+                    <option name="path" value="file://$USER_HOME$/Desktop/demo.json" />
+                  </Item>
+                </list>
+              </option>
+            </SchemaInfo>
+          </value>
+        </entry>
+      </map>
+    </state>
+  </component>
+</project>
\ No newline at end of file
diff --git a/gameoflife.properties b/gameoflife.properties
new file mode 100644
index 0000000000000000000000000000000000000000..30bb2518200bcc0be89ef8bb50cb1eb7509c19d8
--- /dev/null
+++ b/gameoflife.properties
@@ -0,0 +1,4 @@
+path.variable.kotlin_bundled=C\:\\Users\\steye\\AppData\\Local\\JetBrains\\Toolbox\\apps\\IDEA-U\\ch-0\\193.5233.102\\plugins\\Kotlin\\kotlinc
+path.variable.maven_repository=C\:\\Users\\steye\\.m2\\repository
+jdk.home.13=C\:/Program Files/Java/jdk-13.0.1
+javac2.instrumentation.includeJavaRuntime=false
\ No newline at end of file
diff --git a/gameoflife.xml b/gameoflife.xml
new file mode 100644
index 0000000000000000000000000000000000000000..43c4af51a4c004ea7a6046debdc2c179fe144324
--- /dev/null
+++ b/gameoflife.xml
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="gameoflife" default="all">
+  
+  
+  <property file="gameoflife.properties"/>
+  <!-- Uncomment the following property if no tests compilation is needed -->
+  <!-- 
+  <property name="skip.tests" value="true"/>
+   -->
+  
+  <!-- Compiler options -->
+  
+  <property name="compiler.debug" value="on"/>
+  <property name="compiler.generate.no.warnings" value="off"/>
+  <property name="compiler.args" value=""/>
+  <property name="compiler.max.memory" value="700m"/>
+  <patternset id="ignored.files">
+    <exclude name="**/*.hprof/**"/>
+    <exclude name="**/*.pyc/**"/>
+    <exclude name="**/*.pyo/**"/>
+    <exclude name="**/*.rbc/**"/>
+    <exclude name="**/*.yarb/**"/>
+    <exclude name="**/*~/**"/>
+    <exclude name="**/.DS_Store/**"/>
+    <exclude name="**/.git/**"/>
+    <exclude name="**/.hg/**"/>
+    <exclude name="**/.svn/**"/>
+    <exclude name="**/CVS/**"/>
+    <exclude name="**/__pycache__/**"/>
+    <exclude name="**/_svn/**"/>
+    <exclude name="**/vssver.scc/**"/>
+    <exclude name="**/vssver2.scc/**"/>
+  </patternset>
+  <patternset id="library.patterns">
+    <include name="*.egg"/>
+    <include name="*.jar"/>
+    <include name="*.ear"/>
+    <include name="*.ane"/>
+    <include name="*.klib"/>
+    <include name="*.swc"/>
+    <include name="*.war"/>
+    <include name="*.zip"/>
+  </patternset>
+  <patternset id="compiler.resources">
+    <exclude name="**/?*.java"/>
+    <exclude name="**/?*.form"/>
+    <exclude name="**/?*.class"/>
+    <exclude name="**/?*.groovy"/>
+    <exclude name="**/?*.scala"/>
+    <exclude name="**/?*.flex"/>
+    <exclude name="**/?*.kt"/>
+    <exclude name="**/?*.clj"/>
+    <exclude name="**/?*.aj"/>
+  </patternset>
+  
+  <!-- JDK definitions -->
+  
+  <property name="jdk.bin.13" value="${jdk.home.13}/bin"/>
+  <path id="jdk.classpath.13">
+    <fileset dir="${jdk.home.13}">
+      <include name="../jdk-13.0.1!/java.base"/>
+      <include name="../jdk-13.0.1!/java.compiler"/>
+      <include name="../jdk-13.0.1!/java.datatransfer"/>
+      <include name="../jdk-13.0.1!/java.desktop"/>
+      <include name="../jdk-13.0.1!/java.instrument"/>
+      <include name="../jdk-13.0.1!/java.logging"/>
+      <include name="../jdk-13.0.1!/java.management"/>
+      <include name="../jdk-13.0.1!/java.management.rmi"/>
+      <include name="../jdk-13.0.1!/java.naming"/>
+      <include name="../jdk-13.0.1!/java.net.http"/>
+      <include name="../jdk-13.0.1!/java.prefs"/>
+      <include name="../jdk-13.0.1!/java.rmi"/>
+      <include name="../jdk-13.0.1!/java.scripting"/>
+      <include name="../jdk-13.0.1!/java.se"/>
+      <include name="../jdk-13.0.1!/java.security.jgss"/>
+      <include name="../jdk-13.0.1!/java.security.sasl"/>
+      <include name="../jdk-13.0.1!/java.smartcardio"/>
+      <include name="../jdk-13.0.1!/java.sql"/>
+      <include name="../jdk-13.0.1!/java.sql.rowset"/>
+      <include name="../jdk-13.0.1!/java.transaction.xa"/>
+      <include name="../jdk-13.0.1!/java.xml"/>
+      <include name="../jdk-13.0.1!/java.xml.crypto"/>
+      <include name="../jdk-13.0.1!/jdk.accessibility"/>
+      <include name="../jdk-13.0.1!/jdk.aot"/>
+      <include name="../jdk-13.0.1!/jdk.attach"/>
+      <include name="../jdk-13.0.1!/jdk.charsets"/>
+      <include name="../jdk-13.0.1!/jdk.compiler"/>
+      <include name="../jdk-13.0.1!/jdk.crypto.cryptoki"/>
+      <include name="../jdk-13.0.1!/jdk.crypto.ec"/>
+      <include name="../jdk-13.0.1!/jdk.crypto.mscapi"/>
+      <include name="../jdk-13.0.1!/jdk.dynalink"/>
+      <include name="../jdk-13.0.1!/jdk.editpad"/>
+      <include name="../jdk-13.0.1!/jdk.hotspot.agent"/>
+      <include name="../jdk-13.0.1!/jdk.httpserver"/>
+      <include name="../jdk-13.0.1!/jdk.internal.ed"/>
+      <include name="../jdk-13.0.1!/jdk.internal.jvmstat"/>
+      <include name="../jdk-13.0.1!/jdk.internal.le"/>
+      <include name="../jdk-13.0.1!/jdk.internal.opt"/>
+      <include name="../jdk-13.0.1!/jdk.internal.vm.ci"/>
+      <include name="../jdk-13.0.1!/jdk.internal.vm.compiler"/>
+      <include name="../jdk-13.0.1!/jdk.internal.vm.compiler.management"/>
+      <include name="../jdk-13.0.1!/jdk.jartool"/>
+      <include name="../jdk-13.0.1!/jdk.javadoc"/>
+      <include name="../jdk-13.0.1!/jdk.jcmd"/>
+      <include name="../jdk-13.0.1!/jdk.jconsole"/>
+      <include name="../jdk-13.0.1!/jdk.jdeps"/>
+      <include name="../jdk-13.0.1!/jdk.jdi"/>
+      <include name="../jdk-13.0.1!/jdk.jdwp.agent"/>
+      <include name="../jdk-13.0.1!/jdk.jfr"/>
+      <include name="../jdk-13.0.1!/jdk.jlink"/>
+      <include name="../jdk-13.0.1!/jdk.jshell"/>
+      <include name="../jdk-13.0.1!/jdk.jsobject"/>
+      <include name="../jdk-13.0.1!/jdk.jstatd"/>
+      <include name="../jdk-13.0.1!/jdk.localedata"/>
+      <include name="../jdk-13.0.1!/jdk.management"/>
+      <include name="../jdk-13.0.1!/jdk.management.agent"/>
+      <include name="../jdk-13.0.1!/jdk.management.jfr"/>
+      <include name="../jdk-13.0.1!/jdk.naming.dns"/>
+      <include name="../jdk-13.0.1!/jdk.naming.rmi"/>
+      <include name="../jdk-13.0.1!/jdk.net"/>
+      <include name="../jdk-13.0.1!/jdk.pack"/>
+      <include name="../jdk-13.0.1!/jdk.rmic"/>
+      <include name="../jdk-13.0.1!/jdk.scripting.nashorn"/>
+      <include name="../jdk-13.0.1!/jdk.scripting.nashorn.shell"/>
+      <include name="../jdk-13.0.1!/jdk.sctp"/>
+      <include name="../jdk-13.0.1!/jdk.security.auth"/>
+      <include name="../jdk-13.0.1!/jdk.security.jgss"/>
+      <include name="../jdk-13.0.1!/jdk.unsupported"/>
+      <include name="../jdk-13.0.1!/jdk.unsupported.desktop"/>
+      <include name="../jdk-13.0.1!/jdk.xml.dom"/>
+      <include name="../jdk-13.0.1!/jdk.zipfs"/>
+    </fileset>
+  </path>
+  
+  <property name="project.jdk.home" value="${jdk.home.13}"/>
+  <property name="project.jdk.bin" value="${jdk.bin.13}"/>
+  <property name="project.jdk.classpath" value="jdk.classpath.13"/>
+  
+  
+  <!-- Project Libraries -->
+  
+  <path id="library.javax.json:javax.json-api:1.1.4.classpath">
+    <pathelement location="${path.variable.maven_repository}/javax/json/javax.json-api/1.1.4/javax.json-api-1.1.4.jar"/>
+  </path>
+  
+  <path id="library.org.glassfish:javax.json:1.1.4.classpath">
+    <pathelement location="${path.variable.maven_repository}/org/glassfish/javax.json/1.1.4/javax.json-1.1.4.jar"/>
+  </path>
+  <!-- Register Custom Compiler Taskdefs -->
+  <property name="javac2.home" value="${idea.home}/lib"/>
+  <path id="javac2.classpath">
+    <fileset dir="${javac2.home}">
+      <include name="javac2.jar"/>
+      <include name="jdom.jar"/>
+      <include name="asm-all*.jar"/>
+      <include name="forms-*.jar"/>
+    </fileset>
+  </path>
+  <target name="register.custom.compilers">
+    <taskdef name="javac2" classname="com.intellij.ant.Javac2" classpathref="javac2.classpath"/>
+    <taskdef name="instrumentIdeaExtensions" classname="com.intellij.ant.InstrumentIdeaExtensions" classpathref="javac2.classpath"/>
+  </target>
+  
+  <!-- Modules -->
+  
+  <import file="${basedir}/module_gameoflife.xml"/>
+  
+  <target name="init" description="Build initialization">
+    <!-- Perform any build initialization in this target -->
+  </target>
+  
+  <target name="clean" depends="clean.module.gameoflife" description="cleanup all"/>
+  
+  <target name="build.modules" depends="init, clean, compile.module.gameoflife" description="build all modules"/>
+  
+  <target name="all" depends="build.modules" description="build all"/>
+</project>
\ No newline at end of file
diff --git a/module_gameoflife.xml b/module_gameoflife.xml
new file mode 100644
index 0000000000000000000000000000000000000000..57b022c3808d4b6940a3f5709cd1624141ee53d7
--- /dev/null
+++ b/module_gameoflife.xml
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="module_gameoflife" default="compile.module.gameoflife">
+  <dirname property="module.gameoflife.basedir" file="${ant.file.module_gameoflife}"/>
+  
+  <property name="module.jdk.home.gameoflife" value="${project.jdk.home}"/>
+  <property name="module.jdk.bin.gameoflife" value="${project.jdk.bin}"/>
+  <property name="module.jdk.classpath.gameoflife" value="${project.jdk.classpath}"/>
+  
+  <property name="compiler.args.gameoflife" value="-encoding UTF-8 -source 13 -target 13 ${compiler.args}"/>
+  
+  <property name="gameoflife.output.dir" value="${module.gameoflife.basedir}/bin"/>
+  <property name="gameoflife.testoutput.dir" value="${module.gameoflife.basedir}/bin"/>
+  
+  <path id="gameoflife.module.bootclasspath">
+    <!-- Paths to be included in compilation bootclasspath -->
+  </path>
+  
+  <path id="gameoflife.module.production.classpath">
+    <path refid="${module.jdk.classpath.gameoflife}"/>
+    <pathelement location="${idea.home}/lib/junit.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/apiguardian/apiguardian-api/1.0.0/apiguardian-api-1.0.0.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/jupiter/junit-jupiter-api/5.4.2/junit-jupiter-api-5.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/jupiter/junit-jupiter-engine/5.4.2/junit-jupiter-engine-5.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/jupiter/junit-jupiter-params/5.4.2/junit-jupiter-params-5.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/jupiter/junit-jupiter/5.4.2/junit-jupiter-5.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/platform/junit-platform-commons/1.4.2/junit-platform-commons-1.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/platform/junit-platform-engine/1.4.2/junit-platform-engine-1.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/opentest4j/opentest4j/1.1.1/opentest4j-1.1.1.jar"/>
+    <path refid="library.javax.json:javax.json-api:1.1.4.classpath"/>
+    <path refid="library.org.glassfish:javax.json:1.1.4.classpath"/>
+  </path>
+  
+  <path id="gameoflife.runtime.production.module.classpath">
+    <pathelement location="${idea.home}/lib/junit.jar"/>
+    <pathelement location="${gameoflife.output.dir}"/>
+    <pathelement location="${path.variable.maven_repository}/org/apiguardian/apiguardian-api/1.0.0/apiguardian-api-1.0.0.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/jupiter/junit-jupiter-api/5.4.2/junit-jupiter-api-5.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/jupiter/junit-jupiter-engine/5.4.2/junit-jupiter-engine-5.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/jupiter/junit-jupiter-params/5.4.2/junit-jupiter-params-5.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/jupiter/junit-jupiter/5.4.2/junit-jupiter-5.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/platform/junit-platform-commons/1.4.2/junit-platform-commons-1.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/platform/junit-platform-engine/1.4.2/junit-platform-engine-1.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/opentest4j/opentest4j/1.1.1/opentest4j-1.1.1.jar"/>
+    <path refid="library.javax.json:javax.json-api:1.1.4.classpath"/>
+    <path refid="library.org.glassfish:javax.json:1.1.4.classpath"/>
+  </path>
+  
+  <path id="gameoflife.module.classpath">
+    <path refid="${module.jdk.classpath.gameoflife}"/>
+    <pathelement location="${idea.home}/lib/junit.jar"/>
+    <pathelement location="${gameoflife.output.dir}"/>
+    <pathelement location="${path.variable.maven_repository}/org/apiguardian/apiguardian-api/1.0.0/apiguardian-api-1.0.0.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/jupiter/junit-jupiter-api/5.4.2/junit-jupiter-api-5.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/jupiter/junit-jupiter-engine/5.4.2/junit-jupiter-engine-5.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/jupiter/junit-jupiter-params/5.4.2/junit-jupiter-params-5.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/jupiter/junit-jupiter/5.4.2/junit-jupiter-5.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/platform/junit-platform-commons/1.4.2/junit-platform-commons-1.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/platform/junit-platform-engine/1.4.2/junit-platform-engine-1.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/opentest4j/opentest4j/1.1.1/opentest4j-1.1.1.jar"/>
+    <path refid="library.javax.json:javax.json-api:1.1.4.classpath"/>
+    <path refid="library.org.glassfish:javax.json:1.1.4.classpath"/>
+  </path>
+  
+  <path id="gameoflife.runtime.module.classpath">
+    <pathelement location="${idea.home}/lib/junit.jar"/>
+    <pathelement location="${gameoflife.output.dir}"/>
+    <pathelement location="${path.variable.maven_repository}/org/apiguardian/apiguardian-api/1.0.0/apiguardian-api-1.0.0.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/jupiter/junit-jupiter-api/5.4.2/junit-jupiter-api-5.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/jupiter/junit-jupiter-engine/5.4.2/junit-jupiter-engine-5.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/jupiter/junit-jupiter-params/5.4.2/junit-jupiter-params-5.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/jupiter/junit-jupiter/5.4.2/junit-jupiter-5.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/platform/junit-platform-commons/1.4.2/junit-platform-commons-1.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/junit/platform/junit-platform-engine/1.4.2/junit-platform-engine-1.4.2.jar"/>
+    <pathelement location="${path.variable.maven_repository}/org/opentest4j/opentest4j/1.1.1/opentest4j-1.1.1.jar"/>
+    <path refid="library.javax.json:javax.json-api:1.1.4.classpath"/>
+    <path refid="library.org.glassfish:javax.json:1.1.4.classpath"/>
+  </path>
+  
+  
+  <patternset id="excluded.from.module.gameoflife">
+    <patternset refid="ignored.files"/>
+  </patternset>
+  
+  <patternset id="excluded.from.compilation.gameoflife">
+    <patternset refid="excluded.from.module.gameoflife"/>
+  </patternset>
+  
+  <path id="gameoflife.module.sourcepath">
+    <dirset dir="${module.gameoflife.basedir}">
+      <include name="src"/>
+      <include name="test"/>
+    </dirset>
+  </path>
+  
+  
+  <target name="compile.module.gameoflife" depends="compile.module.gameoflife.production,compile.module.gameoflife.tests" description="Compile module GameOfLife"/>
+  
+  <target name="compile.module.gameoflife.production" depends="register.custom.compilers" description="Compile module GameOfLife; production classes">
+    <mkdir dir="${gameoflife.output.dir}"/>
+    <javac2 destdir="${gameoflife.output.dir}" debug="${compiler.debug}" nowarn="${compiler.generate.no.warnings}" memorymaximumsize="${compiler.max.memory}" fork="true" executable="${module.jdk.bin.gameoflife}/javac">
+      <compilerarg line="${compiler.args.gameoflife}"/>
+      <bootclasspath refid="gameoflife.module.bootclasspath"/>
+      <classpath refid="gameoflife.module.production.classpath"/>
+      <src refid="gameoflife.module.sourcepath"/>
+      <patternset refid="excluded.from.compilation.gameoflife"/>
+    </javac2>
+    
+    <copy todir="${gameoflife.output.dir}">
+      <fileset dir="${module.gameoflife.basedir}/src">
+        <patternset refid="compiler.resources"/>
+        <type type="file"/>
+      </fileset>
+      <fileset dir="${module.gameoflife.basedir}/test">
+        <patternset refid="compiler.resources"/>
+        <type type="file"/>
+      </fileset>
+    </copy>
+  </target>
+  
+  <target name="compile.module.gameoflife.tests" depends="register.custom.compilers,compile.module.gameoflife.production" description="compile module GameOfLife; test classes" unless="skip.tests"/>
+  
+  <target name="clean.module.gameoflife" description="cleanup module">
+    <delete dir="${gameoflife.output.dir}"/>
+    <delete dir="${gameoflife.testoutput.dir}"/>
+  </target>
+</project>
\ No newline at end of file
diff --git a/out/artifacts/GameOfLife_jar/GameOfLife.jar b/out/artifacts/GameOfLife_jar/GameOfLife.jar
new file mode 100644
index 0000000000000000000000000000000000000000..05e78bacf998fd6d5369aa6fceb8581376a2c0dc
Binary files /dev/null and b/out/artifacts/GameOfLife_jar/GameOfLife.jar differ
diff --git a/src/META-INF/MANIFEST.MF b/src/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..c89698d2872901bb2a217c652c5b14e46286e5d2
--- /dev/null
+++ b/src/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Main-Class: game.Main
+