diff --git a/panels/GameOfLife/script.js b/panels/GameOfLife/script.js
new file mode 100755
index 0000000000000000000000000000000000000000..c4b7f05837cf4d1f9bb5e72f0bcb9879ea30c46f
--- /dev/null
+++ b/panels/GameOfLife/script.js
@@ -0,0 +1,645 @@
+var GOLData = {
+	field: null,
+    canvas: null,
+    context: null,
+    vAmount: -1,
+	hAmount: -1,
+	sWidth: -1,
+	sHeight: -1,
+	panel: null,
+	config: null,
+	grid: 1
+};
+
+binder.loaded = function(panel, config) {
+	GOLData.panel = panel;
+	GOLData.config = config;
+	GOLinit();
+	GOLdraw();
+	setTimeout(function(){setInterval(function() {GOLiterate(); GOLdraw();}, 100); }, 1000);
+}
+
+function GOLinit(){
+	//if(GOLData.config[initType] == "random") {
+		//GOLinitRandom();
+		GOLinitText("FICKDICH");
+	//} WTF config is so doch bullshit
+}
+
+function GOLCreateField(vAmount,hAmount) {
+	GOLData.vAmount = vAmount;
+	GOLData.hAmount = hAmount;
+	var arr = [];
+	for (var i=0; i < vAmount; i++) {
+		arr[i] = [];
+	}
+	GOLData.field = arr;
+}
+
+function GOLinitRandom(){
+	GOLCreateField(500,500);
+	for (var i = 0; i < GOLData.vAmount; i++) {
+		for (var j = 0; j < GOLData.vAmount; j++){
+			GOLData.field[i][j] = GOLrandom(0,3);
+		}
+	}
+}
+
+function GOLrandom(min,max){
+	return Math.floor((Math.random() * max) + min);
+}
+
+function GOLinitStatic(){
+	//Wait4Config
+}
+
+function GOLinitText(text){
+	GOLCreateField(4*6,2*6);
+	for (var i = 0; i < GOLData.vAmount; i++) {
+		for (var j = 0; j < GOLData.vAmount; j++){
+			GOLData.field[i][j] = 0;
+		}
+	}
+	var charsPerLine = Math.floor(GOLData.vAmount/6);
+	var lines = Math.floor(GOLData.hAmount/6);
+	var j = 0;
+	var i = 0;
+	var c = 0;
+	while(i < charsPerLine) {
+		switch(text.charAt(c)){
+			case 'A':
+				monoSpace.A(GOLData.field,i*6,j*6);
+				break;
+			case 'B':
+				monoSpace.B(GOLData.field,i*6,j*6);
+				break;
+			case 'C':
+				monoSpace.C(GOLData.field,i*6,j*6);
+				break;
+			case 'D':
+				monoSpace.D(GOLData.field,i*6,j*6);
+				break;
+			case 'E':
+				monoSpace.E(GOLData.field,i*6,j*6);
+				break;
+			case 'F':
+				monoSpace.F(GOLData.field,i*6,j*6);
+				break;
+			case 'G':
+				monoSpace.G(GOLData.field,i*6,j*6);
+				break;
+			case 'H':
+				monoSpace.H(GOLData.field,i*6,j*6);
+				break;
+			case 'I':
+				monoSpace.I(GOLData.field,i*6,j*6);
+				break;
+			case 'J':
+				monoSpace.J(GOLData.field,i*6,j*6);
+				break;
+			case 'K':
+				monoSpace.K(GOLData.field,i*6,j*6);
+				break;
+			case 'L':
+				monoSpace.L(GOLData.field,i*6,j*6);
+				break;
+			case 'M':
+				monoSpace.M(GOLData.field,i*6,j*6);
+				break;
+			case 'N':
+				monoSpace.N(GOLData.field,i*6,j*6);
+				break;
+			case 'O':
+				monoSpace.O(GOLData.field,i*6,j*6);
+				break;
+			case 'P':
+				monoSpace.P(GOLData.field,i*6,j*6);
+				break;
+			case 'Q':
+				monoSpace.Q(GOLData.field,i*6,j*6);
+				break;
+			case 'R':
+				monoSpace.R(GOLData.field,i*6,j*6);
+				break;
+			case 'S':
+				monoSpace.S(GOLData.field,i*6,j*6);
+				break;
+			case 'T':
+				monoSpace.T(GOLData.field,i*6,j*6);
+				break;
+			case 'U':
+				monoSpace.U(GOLData.field,i*6,j*6);
+				break;
+			case 'V':
+				monoSpace.V(GOLData.field,i*6,j*6);
+				break;
+			case 'W':
+				monoSpace.W(GOLData.field,i*6,j*6);
+				break;
+			case 'X':
+				monoSpace.X(GOLData.field,i*6,j*6);
+				break;
+			case 'Y':
+				monoSpace.Y(GOLData.field,i*6,j*6);
+				break;
+			case 'Z':
+				monoSpace.Z(GOLData.field,i*6,j*6);
+				break;
+		}
+		if(i >= charsPerLine-1){
+			i = 0;
+			j++;
+		} else {
+			i++;
+		}
+		if(j == lines) {
+			break;
+		}
+		c++;
+	}
+}
+
+function GOLiterate() {
+	var temp = GOLData.field.slice(0);
+	for (var i = 0; i < GOLData.vAmount; i++) {
+		for (var j = 0; j < GOLData.vAmount; j++){
+			var cell = temp[i][j];
+			if(cell == 1) {
+				var alife = GOLcountLife(temp,i,j);
+				if (alife < 2){
+					GOLData.field[i][j] = 2;
+				} else if(alife > 3){
+					GOLData.field[i][j] = 2;
+				}
+			} else {
+				var alife = GOLcountLife(temp,i,j);
+				if(alife == 3){
+					GOLData.field[i][j] = 1;
+				}
+			}
+		}
+	}
+}
+
+function GOLisLife(cell){
+	if(cell == 1) {
+		return 1
+	} else {
+		return 0
+	}
+}
+
+function GOLcountLife(temp,x,y){
+	var value = 0;
+	if(x+1 < GOLData.vAmount){
+		if(y+1 < GOLData.hAmount){
+			value += GOLisLife(temp[x+1][y+1]);
+		}
+			value += GOLisLife(temp[x+1][y]);
+		if(y-1 >= 0){
+			value += GOLisLife(temp[x+1][y-1]);
+		}
+	}
+	if(y+1 < GOLData.hAmount){
+		value += GOLisLife(temp[x][y+1]);
+	}
+	if(y-1 >= 0){
+		value += GOLisLife(temp[x][y-1]);
+	}
+	if(x-1 >= 0){
+		if(y+1 < GOLData.hAmount){
+			value += GOLisLife(temp[x-1][y+1]);
+		}
+		value += GOLisLife(temp[x-1][y]);
+		if(y-1 >= 0){
+			value += GOLisLife(temp[x-1][y-1]);
+		}
+	}
+	return value;
+}
+
+function GOLisDead(cell){
+	if(cell == 2) {
+		return 1
+	} else {
+		return 0
+	}
+}
+
+function GOLcountDead(temp,x,y){
+	var value = 0;
+	if(x+1 < GOLData.vAmount){
+		if(y+1 < GOLData.hAmount){
+			value += GOLisDead(temp[x+1][y+1]);
+		}
+			value += GOLisDead(temp[x+1][y]);
+		if(y-1 >= 0){
+			value += GOLisDead(temp[x+1][y-1]);
+		}
+	}
+	if(y+1 < GOLData.hAmount){
+		value += GOLisDead(temp[x][y+1]);
+	}
+	if(y-1 >= 0){
+		value += GOLisDead(temp[x][y-1]);
+	}
+	if(x-1 >= 0){
+		if(y+1 < GOLData.hAmount){
+			value += GOLisDead(temp[x-1][y+1]);
+		}
+		value += GOLisDead(temp[x-1][y]);
+		if(y-1 >= 0){
+			value += GOLisDead(temp[x-1][y-1]);
+		}
+	}
+	return value;
+}
+
+function GOLinitDraw(){
+	GOLData.canvas = document.getElementById("GOLCanvas");
+    GOLData.context = document.getElementById("GOLCanvas").getContext("2d");
+	GOLData.canvas.width = panel.width();
+	GOLData.canvas.height = panel.height();
+	if(GOLData.grid) {
+		GOLData.sWidth  = (GOLData.canvas.width-(GOLData.vAmount+1)) / GOLData.vAmount;
+		GOLData.sHeight = (GOLData.canvas.height-(GOLData.hAmount+1)) / GOLData.hAmount;
+	} else {
+		GOLData.sWidth  = GOLData.canvas.width / GOLData.vAmount;
+		GOLData.sHeight = GOLData.canvas.height / GOLData.hAmount;
+	}
+}
+
+function GOLdraw() {
+	GOLinitDraw();
+	if(GOLData.grid) {
+		for (var i = 0; i < GOLData.vAmount; i++) {
+			for (var j = 0; j < GOLData.hAmount; j++){
+				GOLdrawSquare((i*GOLData.sWidth)+i+1, (j*GOLData.sHeight)+j+1, GOLData.field[i][j])
+			}
+		}
+		for(var i = 0; i <= GOLData.vAmount;i++) {
+			for(var j = 0; j <= GOLData.hAmount ;j++) {
+				GOLData.context.beginPath();
+				GOLData.context.moveTo(i* GOLData.sWidth + i, 0);
+				GOLData.context.lineTo(i* GOLData.sWidth + i,j * GOLData.sHeight + j);
+				GOLData.context.stroke();
+				GOLData.context.beginPath();
+				GOLData.context.moveTo(0, j * GOLData.sHeight + j);
+				GOLData.context.lineTo(i * GOLData.sWidth + i,j * GOLData.sHeight + j);
+				GOLData.context.stroke();
+			}
+		}
+	} else {
+		for (var i = 0; i < GOLData.vAmount; i++) {
+			for (var j = 0; j < GOLData.hAmount; j++){
+				GOLdrawSquare((i*GOLData.sWidth), (j*GOLData.sHeight), GOLData.field[i][j])
+			}
+		}
+	}
+}
+
+function GOLdrawSquare(x,y,status){
+	switch (status) {
+    case 0:
+        GOLData.context.fillStyle = "#FFFFFF";
+        break;
+    case 1:
+        GOLData.context.fillStyle = "#00FF00";
+        break;
+    case 2:
+        GOLData.context.fillStyle = "#FF0000";
+        break;
+	}
+	GOLData.context.fillRect(x,y,GOLData.sWidth,GOLData.sHeight);
+}
+
+var monoSpace = {
+A: function A(array,x,y){
+		array[x+2][y+1] = 1;
+		array[x+3][y+1] = 1;
+		array[x+1][y+2] = 1;
+		array[x+4][y+2] = 1;
+		array[x+1][y+3] = 1;
+		array[x+2][y+3] = 1;
+		array[x+3][y+3] = 1;
+		array[x+4][y+3] = 1;
+		array[x+1][y+4] = 1;
+		array[x+4][y+4] = 1;
+		array[x+1][y+5] = 1;
+		array[x+4][y+5] = 1;
+	},
+B:	function (array,x,y){
+		array[x+1][y+1] = 1;
+		array[x+2][y+1] = 1;
+		array[x+3][y+1] = 1;
+		array[x+1][y+2] = 1;
+		array[x+4][y+2] = 1;
+		array[x+1][y+3] = 1;
+		array[x+2][y+3] = 1;
+		array[x+3][y+3] = 1;
+		array[x+1][y+4] = 1;
+		array[x+4][y+4] = 1;
+		array[x+1][y+5] = 1;
+		array[x+2][y+5] = 1;
+		array[x+3][y+5] = 1;
+	},
+C:	function (array,x,y){
+		array[x+2][y+1] = 1;
+		array[x+3][y+1] = 1;
+		array[x+4][y+1] = 1;
+		array[x+1][y+2] = 1;
+		array[x+1][y+3] = 1;
+		array[x+1][y+4] = 1;
+		array[x+2][y+5] = 1;
+		array[x+3][y+5] = 1;
+		array[x+4][y+5] = 1;
+	},
+D:	function (array,x,y){
+		array[x+1][y+1] = 1;
+		array[x+2][y+1] = 1;
+		array[x+3][y+1] = 1;
+		array[x+1][y+2] = 1;
+		array[x+4][y+2] = 1;
+		array[x+1][y+3] = 1;
+		array[x+4][y+3] = 1;
+		array[x+1][y+4] = 1;
+		array[x+4][y+4] = 1;
+		array[x+1][y+5] = 1;
+		array[x+2][y+5] = 1;
+		array[x+3][y+5] = 1;
+	},
+E:	function (array,x,y){
+		array[x+1][y+1] = 1;
+		array[x+2][y+1] = 1;
+		array[x+3][y+1] = 1;
+		array[x+4][y+1] = 1;
+		array[x+1][y+2] = 1;
+		array[x+1][y+3] = 1;
+		array[x+2][y+3] = 1;
+		array[x+3][y+3] = 1;
+		array[x+4][y+3] = 1;
+		array[x+1][y+4] = 1;
+		array[x+1][y+5] = 1;
+		array[x+2][y+5] = 1;
+		array[x+3][y+5] = 1;
+		array[x+4][y+5] = 1;
+	},
+F:	function (array,x,y){
+		array[x+1][y+1] = 1;
+		array[x+2][y+1] = 1;
+		array[x+3][y+1] = 1;
+		array[x+4][y+1] = 1;
+		array[x+1][y+2] = 1;
+		array[x+1][y+3] = 1;
+		array[x+2][y+3] = 1;
+		array[x+3][y+3] = 1;
+		array[x+4][y+3] = 1;
+		array[x+1][y+4] = 1;
+		array[x+1][y+5] = 1;
+	},
+G:	function (array,x,y){
+		array[x+2][y+1] = 1;
+		array[x+3][y+1] = 1;
+		array[x+4][y+1] = 1;
+		array[x+1][y+2] = 1;
+		array[x+1][y+3] = 1;
+		array[x+3][y+3] = 1;
+		array[x+4][y+3] = 1;
+		array[x+1][y+4] = 1;
+		array[x+4][y+4] = 1;
+		array[x+2][y+5] = 1;
+		array[x+3][y+5] = 1;
+		array[x+4][y+5] = 1;
+	},
+H:	function (array,x,y){
+		array[x+1][y+1] = 1;
+		array[x+4][y+1] = 1;
+		array[x+1][y+2] = 1;
+		array[x+4][y+2] = 1;
+		array[x+1][y+3] = 1;
+		array[x+2][y+3] = 1;
+		array[x+3][y+3] = 1;
+		array[x+4][y+3] = 1;
+		array[x+1][y+4] = 1;
+		array[x+4][y+4] = 1;
+		array[x+1][y+5] = 1;
+		array[x+4][y+5] = 1;
+	},
+I:	function (array,x,y){
+		array[x+2][y+1] = 1;
+		array[x+2][y+2] = 1;
+		array[x+2][y+3] = 1;
+		array[x+2][y+4] = 1;
+		array[x+2][y+5] = 1;
+	},
+J:	function (array,x,y){
+		array[x+4][y+1] = 1;
+		array[x+4][y+2] = 1;
+		array[x+4][y+3] = 1;
+		array[x+1][y+4] = 1;
+		array[x+4][y+4] = 1;
+		array[x+2][y+5] = 1;
+		array[x+3][y+5] = 1;
+	},
+K:	function (array,x,y){
+		array[x+1][y+1] = 1;
+		array[x+4][y+1] = 1;
+		array[x+1][y+2] = 1;
+		array[x+3][y+2] = 1;
+		array[x+1][y+3] = 1;
+		array[x+2][y+3] = 1;
+		array[x+1][y+4] = 1;
+		array[x+3][y+4] = 1;
+		array[x+1][y+5] = 1;
+		array[x+4][y+5] = 1;
+	},
+L:	function (array,x,y){
+		array[x+1][y+1] = 1;
+		array[x+1][y+2] = 1;
+		array[x+1][y+3] = 1;
+		array[x+1][y+4] = 1;
+		array[x+1][y+5] = 1;
+		array[x+2][y+5] = 1;
+		array[x+3][y+5] = 1;
+	},
+M:	function (array,x,y){
+		array[x+0][y+1] = 1;
+		array[x+4][y+1] = 1;
+		array[x+0][y+2] = 1;
+		array[x+1][y+2] = 1;
+		array[x+3][y+2] = 1;
+		array[x+4][y+2] = 1;
+		array[x+0][y+3] = 1;
+		array[x+2][y+3] = 1;
+		array[x+4][y+3] = 1;
+		array[x+0][y+4] = 1;
+		array[x+4][y+4] = 1;
+		array[x+0][y+5] = 1;
+		array[x+4][y+5] = 1;
+	},
+N:	function (array,x,y){
+		array[x+1][y+1] = 1;
+		array[x+4][y+1] = 1;
+		array[x+1][y+2] = 1;
+		array[x+2][y+2] = 1;
+		array[x+4][y+2] = 1;
+		array[x+1][y+3] = 1;
+		array[x+3][y+3] = 1;
+		array[x+4][y+3] = 1;
+		array[x+1][y+4] = 1;
+		array[x+4][y+4] = 1;
+		array[x+1][y+5] = 1;
+		array[x+4][y+5] = 1;
+	},
+O:	function (array,x,y){
+		array[x+2][y+1] = 1;
+		array[x+3][y+1] = 1;
+		array[x+1][y+2] = 1;
+		array[x+4][y+2] = 1;
+		array[x+1][y+3] = 1;
+		array[x+4][y+3] = 1;
+		array[x+1][y+4] = 1;
+		array[x+4][y+4] = 1;
+		array[x+2][y+5] = 1;
+		array[x+3][y+5] = 1;
+	},
+P:	function (array,x,y){
+		array[x+1][y+1] = 1;
+		array[x+2][y+1] = 1;
+		array[x+3][y+1] = 1;
+		array[x+1][y+2] = 1;
+		array[x+4][y+2] = 1;
+		array[x+1][y+3] = 1;
+		array[x+2][y+3] = 1;
+		array[x+3][y+3] = 1;
+		array[x+1][y+4] = 1;
+		array[x+1][y+5] = 1;
+	},
+Q:	function (array,x,y){
+		array[x+2][y+1] = 1;
+		array[x+3][y+1] = 1;
+		array[x+1][y+2] = 1;
+		array[x+4][y+2] = 1;
+		array[x+1][y+3] = 1;
+		array[x+4][y+3] = 1;
+		array[x+1][y+4] = 1;
+		array[x+3][y+4] = 1;
+		array[x+2][y+5] = 1;
+		array[x+4][y+5] = 1;
+	},
+R:	function (array,x,y){
+		array[x+1][y+1] = 1;
+		array[x+2][y+1] = 1;
+		array[x+3][y+1] = 1;
+		array[x+1][y+2] = 1;
+		array[x+4][y+2] = 1;
+		array[x+1][y+3] = 1;
+		array[x+2][y+3] = 1;
+		array[x+3][y+3] = 1;
+		array[x+1][y+4] = 1;
+		array[x+3][y+4] = 1;
+		array[x+1][y+5] = 1;
+		array[x+4][y+5] = 1;
+	},
+S:	function (array,x,y){
+		array[x+2][y+1] = 1;
+		array[x+3][y+1] = 1;
+		array[x+4][y+1] = 1;
+		array[x+1][y+2] = 1;
+		array[x+2][y+3] = 1;
+		array[x+3][y+3] = 1;
+		array[x+4][y+4] = 1;
+		array[x+1][y+5] = 1;
+		array[x+2][y+5] = 1;
+		array[x+3][y+5] = 1;
+	},
+T:	function (array,x,y){
+		array[x+0][y+1] = 1;
+		array[x+1][y+1] = 1;
+		array[x+2][y+1] = 1;
+		array[x+3][y+1] = 1;
+		array[x+4][y+1] = 1;
+		array[x+2][y+2] = 1;
+		array[x+2][y+3] = 1;
+		array[x+2][y+4] = 1;
+		array[x+2][y+5] = 1;
+	},
+U:	function (array,x,y){
+		array[x+1][y+1] = 1;
+		array[x+4][y+1] = 1;
+		array[x+1][y+2] = 1;
+		array[x+4][y+2] = 1;
+		array[x+1][y+3] = 1;
+		array[x+4][y+3] = 1;
+		array[x+1][y+4] = 1;
+		array[x+4][y+4] = 1;
+		array[x+2][y+5] = 1;
+		array[x+3][y+5] = 1;
+	},
+V:	function (array,x,y){
+		array[x+0][y+1] = 1;
+		array[x+4][y+1] = 1;
+		array[x+0][y+2] = 1;
+		array[x+4][y+2] = 1;
+		array[x+1][y+3] = 1;
+		array[x+3][y+3] = 1;
+		array[x+1][y+4] = 1;
+		array[x+3][y+4] = 1;
+		array[x+2][y+5] = 1;
+	},
+W:	function W(array,x,y){
+	array[x+0][y+1] = 1;
+	array[x+2][y+1] = 1;
+	array[x+4][y+1] = 1;
+	array[x+0][y+2] = 1;
+	array[x+2][y+2] = 1;
+	array[x+4][y+2] = 1;
+	array[x+0][y+3] = 1;
+	array[x+2][y+3] = 1;
+	array[x+4][y+3] = 1;
+	array[x+1][y+4] = 1;
+	array[x+3][y+4] = 1;
+	array[x+1][y+5] = 1;
+	array[x+3][y+5] = 1;
+	},
+X:	function (array,x,y){
+	array[x+1][y+1] = 1;
+	array[x+4][y+1] = 1;
+	array[x+1][y+2] = 1;
+	array[x+4][y+2] = 1;
+	array[x+2][y+3] = 1;
+	array[x+3][y+3] = 1;
+	array[x+1][y+4] = 1;
+	array[x+4][y+4] = 1;
+	array[x+1][y+5] = 1;
+	array[x+4][y+5] = 1;
+	},
+Y:	function (array,x,y){
+	array[x+1][y+1] = 1;
+	array[x+4][y+1] = 1;
+	array[x+1][y+2] = 1;
+	array[x+4][y+2] = 1;
+	array[x+1][y+3] = 1;
+	array[x+2][y+3] = 1;
+	array[x+3][y+3] = 1;
+	array[x+4][y+3] = 1;
+	array[x+4][y+4] = 1;
+	array[x+1][y+5] = 1;
+	array[x+2][y+5] = 1;
+	array[x+3][y+5] = 1;
+	},
+Z:	function (array,x,y){
+	array[x+1][y+1] = 1;
+	array[x+2][y+1] = 1;
+	array[x+3][y+1] = 1;
+	array[x+4][y+1] = 1;
+	array[x+4][y+2] = 1;
+	array[x+2][y+3] = 1;
+	array[x+3][y+3] = 1;
+	array[x+1][y+4] = 1;
+	array[x+1][y+5] = 1;
+	array[x+2][y+5] = 1;
+	array[x+3][y+5] = 1;
+	array[x+4][y+5] = 1;
+	}
+}
diff --git a/panels/GameOfLife/style.css b/panels/GameOfLife/style.css
new file mode 100755
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/panels/GameOfLife/template.html b/panels/GameOfLife/template.html
new file mode 100755
index 0000000000000000000000000000000000000000..2ee9a4d6e80d9bc365c4c64dbef4e66129eb55ce
--- /dev/null
+++ b/panels/GameOfLife/template.html
@@ -0,0 +1 @@
+<canvas id="GOLCanvas"/>