diff --git a/__pycache__/dashboard.cpython-310.pyc b/__pycache__/dashboard.cpython-310.pyc
new file mode 100644
index 0000000..cd973cd
Binary files /dev/null and b/__pycache__/dashboard.cpython-310.pyc differ
diff --git a/dashboard_static/index.html b/dashboard_static/index.html
index 3577888..8b2419a 100644
--- a/dashboard_static/index.html
+++ b/dashboard_static/index.html
@@ -1,48 +1,37 @@
 
-
+
 
-Neca Test 
-Twitter sports dashboard 
+    ECA Dashboard Template 
-
-
-
This is the dashboard template file. The easiest way to get started is to think up a simple name (let's say we take 'dashboard'). Now copy template.py to {name}.py start a new module (so that's dashboard.py) and copy template_static to {name}_static.
-
Now you can run the new project with: 
python neca.py -s {name}.py 
-
Further documentation on the ECA system can be found at github.com/utwente-db/eca/wiki , and demos can be found in the demos/ directory.
-
-
In the sample template.py (which comes with the dashboard you're looking at right now), you will find the rules that power this example.
-
Rules are written in Python  and work as follows:
-
@event("foo")
-def action(context, event):
-    print("Event " + event.name + "!")
- 
-The 
@event part tells the system to fire the action whenever the event 'foo' occurs. The 
def action(context, event): part defines a new action that takes two arguments: the context and the event. The rest of the code is the action body.
-
-
-
-
The graph to the right is continuously filled with data generated by the rules.
-
In template.py you can see that an event called 'sample' is fired again and again to create new data points for the graph.
-
These points are then sent to the browser with:
-
emit('sample',{
-    'action': 'add',
-    'value': sample
-}) 
-
-
-
-
-
-
+ -->
+
\ No newline at end of file
diff --git a/dashboard_static/js/code.js b/dashboard_static/js/code.js
new file mode 100644
index 0000000..e69de29
diff --git a/dashboard_static/style/grid.css b/dashboard_static/style/grid.css
deleted file mode 100644
index 878d70e..0000000
--- a/dashboard_static/style/grid.css
+++ /dev/null
@@ -1,374 +0,0 @@
-/*
-	Variable Grid System.
-	Learn more ~ http://www.spry-soft.com/grids/
-	Based on 960 Grid System - http://960.gs/
-
-	Licensed under GPL and MIT.
-*/
-
-/*
-  Forces backgrounds to span full width,
-  even if there is horizontal scrolling.
-  Increase this if your layout is wider.
-
-  Note: IE6 works fine without this fix.
-*/
-
-body {
-  min-width: 960px;
-}
-
-/* Containers
-----------------------------------------------------------------------------------------------------*/
-.container_12 {
-	margin-left: auto;
-	margin-right: auto;
-	width: 960px;
-}
-
-/* Grid >> Global
-----------------------------------------------------------------------------------------------------*/
-
-
-.grid_1,
-.grid_2,
-.grid_3,
-.grid_4,
-.grid_5,
-.grid_6,
-.grid_7,
-.grid_8,
-.grid_9,
-.grid_10,
-.grid_11,
-.grid_12 {
-	display:inline;
-	float: left;
-	position: relative;
-	margin-left: 10px;
-	margin-right: 10px;
-}
-
-
-
-.push_1, .pull_1,
-.push_2, .pull_2,
-.push_3, .pull_3,
-.push_4, .pull_4,
-.push_5, .pull_5,
-.push_6, .pull_6,
-.push_7, .pull_7,
-.push_8, .pull_8,
-.push_9, .pull_9,
-.push_10, .pull_10,
-.push_11, .pull_11,
-.push_12, .pull_12 {
-	position:relative;
-}
-
-
-/* Grid >> Children (Alpha ~ First, Omega ~ Last)
-----------------------------------------------------------------------------------------------------*/
-
-.alpha {
-	margin-left: 0;
-}
-
-.omega {
-	margin-right: 0;
-}
-
-/* Grid >> 12 Columns
-----------------------------------------------------------------------------------------------------*/
-
-
-.container_12 .grid_1 {
-	width:60px;
-}
-
-.container_12 .grid_2 {
-	width:140px;
-}
-
-.container_12 .grid_3 {
-	width:220px;
-}
-
-.container_12 .grid_4 {
-	width:300px;
-}
-
-.container_12 .grid_5 {
-	width:380px;
-}
-
-.container_12 .grid_6 {
-	width:460px;
-}
-
-.container_12 .grid_7 {
-	width:540px;
-}
-
-.container_12 .grid_8 {
-	width:620px;
-}
-
-.container_12 .grid_9 {
-	width:700px;
-}
-
-.container_12 .grid_10 {
-	width:780px;
-}
-
-.container_12 .grid_11 {
-	width:860px;
-}
-
-.container_12 .grid_12 {
-	width:940px;
-}
-
-
-
-
-/* Prefix Extra Space >> 12 Columns
-----------------------------------------------------------------------------------------------------*/
-
-
-.container_12 .prefix_1 {
-	padding-left:80px;
-}
-
-.container_12 .prefix_2 {
-	padding-left:160px;
-}
-
-.container_12 .prefix_3 {
-	padding-left:240px;
-}
-
-.container_12 .prefix_4 {
-	padding-left:320px;
-}
-
-.container_12 .prefix_5 {
-	padding-left:400px;
-}
-
-.container_12 .prefix_6 {
-	padding-left:480px;
-}
-
-.container_12 .prefix_7 {
-	padding-left:560px;
-}
-
-.container_12 .prefix_8 {
-	padding-left:640px;
-}
-
-.container_12 .prefix_9 {
-	padding-left:720px;
-}
-
-.container_12 .prefix_10 {
-	padding-left:800px;
-}
-
-.container_12 .prefix_11 {
-	padding-left:880px;
-}
-
-
-
-/* Suffix Extra Space >> 12 Columns
-----------------------------------------------------------------------------------------------------*/
-
-
-.container_12 .suffix_1 {
-	padding-right:80px;
-}
-
-.container_12 .suffix_2 {
-	padding-right:160px;
-}
-
-.container_12 .suffix_3 {
-	padding-right:240px;
-}
-
-.container_12 .suffix_4 {
-	padding-right:320px;
-}
-
-.container_12 .suffix_5 {
-	padding-right:400px;
-}
-
-.container_12 .suffix_6 {
-	padding-right:480px;
-}
-
-.container_12 .suffix_7 {
-	padding-right:560px;
-}
-
-.container_12 .suffix_8 {
-	padding-right:640px;
-}
-
-.container_12 .suffix_9 {
-	padding-right:720px;
-}
-
-.container_12 .suffix_10 {
-	padding-right:800px;
-}
-
-.container_12 .suffix_11 {
-	padding-right:880px;
-}
-
-
-
-/* Push Space >> 12 Columns
-----------------------------------------------------------------------------------------------------*/
-
-
-.container_12 .push_1 {
-	left:80px;
-}
-
-.container_12 .push_2 {
-	left:160px;
-}
-
-.container_12 .push_3 {
-	left:240px;
-}
-
-.container_12 .push_4 {
-	left:320px;
-}
-
-.container_12 .push_5 {
-	left:400px;
-}
-
-.container_12 .push_6 {
-	left:480px;
-}
-
-.container_12 .push_7 {
-	left:560px;
-}
-
-.container_12 .push_8 {
-	left:640px;
-}
-
-.container_12 .push_9 {
-	left:720px;
-}
-
-.container_12 .push_10 {
-	left:800px;
-}
-
-.container_12 .push_11 {
-	left:880px;
-}
-
-
-
-/* Pull Space >> 12 Columns
-----------------------------------------------------------------------------------------------------*/
-
-
-.container_12 .pull_1 {
-	left:-80px;
-}
-
-.container_12 .pull_2 {
-	left:-160px;
-}
-
-.container_12 .pull_3 {
-	left:-240px;
-}
-
-.container_12 .pull_4 {
-	left:-320px;
-}
-
-.container_12 .pull_5 {
-	left:-400px;
-}
-
-.container_12 .pull_6 {
-	left:-480px;
-}
-
-.container_12 .pull_7 {
-	left:-560px;
-}
-
-.container_12 .pull_8 {
-	left:-640px;
-}
-
-.container_12 .pull_9 {
-	left:-720px;
-}
-
-.container_12 .pull_10 {
-	left:-800px;
-}
-
-.container_12 .pull_11 {
-	left:-880px;
-}
-
-
-
-
-/* `Clear Floated Elements
-----------------------------------------------------------------------------------------------------*/
-
-/* http://sonspring.com/journal/clearing-floats */
-
-.clear {
-  clear: both;
-  display: block;
-  overflow: hidden;
-  visibility: hidden;
-  width: 0;
-  height: 0;
-}
-
-/* http://www.yuiblog.com/blog/2010/09/27/clearfix-reloaded-overflowhidden-demystified */
-
-.clearfix:before,
-.clearfix:after {
-  content: '\0020';
-  display: block;
-  overflow: hidden;
-  visibility: hidden;
-  width: 0;
-  height: 0;
-}
-
-.clearfix:after {
-  clear: both;
-}
-
-/*
-  The following zoom:1 rule is specifically for IE6 + IE7.
-  Move to separate stylesheet if invalid CSS is a problem.
-*/
-
-.clearfix {
-  zoom: 1;
-}
diff --git a/dashboard_static/style/layout.css b/dashboard_static/style/layout.css
deleted file mode 100644
index 2fec0b4..0000000
--- a/dashboard_static/style/layout.css
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-** Base layout:
-**   Grid layout + vertical sizing classes sized to match
-*/
-
-/* Grid layout based on (http://960.gs/) */
-@import url(grid.css);
-
-/* Vertical classes */
-
-.grid_1, .vert_1,
-.grid_2, .vert_2,
-.grid_3, .vert_3,
-.grid_4, .vert_4,
-.grid_5, .vert_5,
-.grid_6, .vert_6,
-.grid_7, .vert_7,
-.grid_8, .vert_8,
-.grid_9, .vert_9,
-.grid_10, .vert_10,
-.grid_11, .vert_11,
-.grid_12, .vert_12 {
-    margin-top: 10px;
-    margin-bottom: 10px;
-}
-
-
-.container_12 .vert_1 { height:60px; }
-.container_12 .vert_2 { height:140px; }
-.container_12 .vert_3 { height:220px; }
-.container_12 .vert_4 { height:300px; }
-.container_12 .vert_5 { height:380px; }
-.container_12 .vert_6 { height:460px; }
-.container_12 .vert_7 { height:540px; }
-.container_12 .vert_8 { height:620px; }
-.container_12 .vert_9 { height:700px; }
-.container_12 .vert_10 { height:780px; }
-.container_12 .vert_11 { height:860px; }
-.container_12 .vert_12 { height:940px; }
-
-
-/* Layout details */
-
-p:first-child {
-    margin-top: 0;
-}
-
-
-/* Log block */
-
-.block.log {
-    overflow: auto;
-}
-
-
-/* Tweets block */
-
-.tweet-list * {
-    margin: 0;
-    padding: 0;
-}
-
-.tweet-list.stream-items {
-    margin: 0;
-    padding: 0;
-    overflow: auto;
-    width: 100%;
-    height: 100%;
-}
diff --git a/dashboard_static/style/style.css b/dashboard_static/style/style.css
new file mode 100644
index 0000000..6b545ed
--- /dev/null
+++ b/dashboard_static/style/style.css
@@ -0,0 +1,11 @@
+body, html, .container {
+	width: 100%;
+	height: 100%;
+	margin: 0;
+	padding: 0;
+}
+
+.container {
+	background-color: #292929;
+	color: white;
+}
\ No newline at end of file
diff --git a/dashboard_static/style/theme.css b/dashboard_static/style/theme.css
deleted file mode 100644
index 0dfc462..0000000
--- a/dashboard_static/style/theme.css
+++ /dev/null
@@ -1,160 +0,0 @@
-/* Basic style & theme*/
-body {
-    font-family: sans-serif;
-}
-
-p {
-    text-align: justify;
-}
-
-code {
-    background-color: #eee;
-    border: 1px solid #ddd;
-    border-radius: 2px;
-    padding: 0 0.2em;
-}
-
-pre {
-    padding: 0.5em 1.5em;
-    background-color: #eee;
-    border-top: 1px solid #ddd;
-    border-bottom: 1px solid #ddd;
-}
-
-/* Devevlopment helpers */
-
-.debug_red   { background-color: rgba(255,0,0,0.5); }
-.debug_green { background-color: rgba(0,255,0,0.5); }
-.debug_blue  { background-color: rgba(0,0,255,0.5); }
-
-
-/* Tweets block */
-
-.tweet-list.stream-items {
-    position: relative;
-    background-color: #fff;
-    list-style: none;
-    color: #333;
-    font-size: 14px;
-    line-height: 18px;
-    font-family: arial, sans-serif;
-    border: 1px solid rgba(0, 0, 0, 0.1);
-}
-
-.tweet-list .stream-item {
-    background: #fff;
-    background-clip: padding-box;
-}
-
-.tweet-list .stream-item:hover {
-    background-color: #eee;
-}
-
-.tweet-list li.stream-item {
-    line-height: inherit
-}
-
-.tweet-list .tweet {
-    position: relative;
-    min-height: 51px;
-    padding: 9px 12px;
-}
-
-.tweet-list .stream-item + .stream-item {
-    border-top: 1px solid rgba(0, 0, 0, 0.1);
-}
-
-.tweet-list .tweet p {
-    word-wrap: break-word
-}
-
-.tweet-list .tweet .details {
-    display: inline-block;
-    margin-right: 2px
-}
-
-.tweet-list .tweet .context a {
-    color: #999
-}
-
-.tweet-list .stream-item .content {
-    margin-left: 58px
-}
-
-.tweet-list .stream-item-header .avatar {
-    float: left;
-    margin-top: 3px;
-    margin-left: -58px
-}
-.tweet-list .account-group {
-    color: #999
-}
-
-.tweet-list a {
-    color: #0084b4;
-    text-decoration: none
-}
-
-.tweet-list a:focus {
-    outline: 0
-}
-
-.tweet-list a:hover,
-.tweet-list a:focus {
-    color: #0084b4;
-    text-decoration: underline
-}
-
-.tweet-list a.account-group:hover,
-.tweet-list a.account-group:focus {
-    text-decoration: none;
-}
-
-.tweet-list a.account-group:hover .fullname,
-.tweet-list a.account-group:focus .fullname {
-    text-decoration: underline;
-}
-
-.tweet-list .avatar {
-    width: 48px;
-    height: 48px;
-    border-radius: 5px;
-    -moz-force-broken-image-icon: 1
-}
-
-.tweet-list .fullname {
-    font-weight: bold;
-    color: #333;
-}
-
-.tweet-list .username {
-    font-size: 12px;
-    color: #999
-}
-
-.tweet-list .username s {
-    color: #bbb
-}
-
-.tweet-list s {
-    text-decoration: none
-}
-
-.tweet-list b {
-    font-weight: normal
-}
-
-.tweet-list .tweet .time {
-    position: relative;
-    float: right;
-    margin-top: 1px;
-    color: #bbb
-}
-
-.tweet-list .tweet-timestamp {
-    color: #999
-}
-
-.tweet-list .tweet .tweet-text {
-    white-space: pre-wrap
-}
diff --git a/dashboard_static/style/wordcloud.css b/dashboard_static/style/wordcloud.css
deleted file mode 100644
index 74c976a..0000000
--- a/dashboard_static/style/wordcloud.css
+++ /dev/null
@@ -1,49 +0,0 @@
-/* fonts */
-
-div.jqcloud {
-  font-family: "Helvetica", "Arial", sans-serif;
-  font-size: 10px;
-  line-height: normal;
-}
-
-div.jqcloud a {
-  font-size: inherit;
-  text-decoration: none;
-}
-
-div.jqcloud span.w10 { font-size: 550%; }
-div.jqcloud span.w9 { font-size: 500%; }
-div.jqcloud span.w8 { font-size: 450%; }
-div.jqcloud span.w7 { font-size: 400%; }
-div.jqcloud span.w6 { font-size: 350%; }
-div.jqcloud span.w5 { font-size: 300%; }
-div.jqcloud span.w4 { font-size: 250%; }
-div.jqcloud span.w3 { font-size: 200%; }
-div.jqcloud span.w2 { font-size: 150%; }
-div.jqcloud span.w1 { font-size: 100%; }
-
-/* colors */
-
-div.jqcloud { color: #09f; }
-div.jqcloud a { color: inherit; }
-div.jqcloud a:hover { color: #0df; }
-div.jqcloud a:hover { color: #0cf; }
-div.jqcloud span.w10 { color: #0cf; }
-div.jqcloud span.w9 { color: #0cf; }
-div.jqcloud span.w8 { color: #0cf; }
-div.jqcloud span.w7 { color: #39d; }
-div.jqcloud span.w6 { color: #90c5f0; }
-div.jqcloud span.w5 { color: #90a0dd; }
-div.jqcloud span.w4 { color: #90c5f0; }
-div.jqcloud span.w3 { color: #a0ddff; }
-div.jqcloud span.w2 { color: #99ccee; }
-div.jqcloud span.w1 { color: #aab5f0; }
-
-/* layout */
-
-div.jqcloud {
-  overflow: hidden;
-  position: relative;
-}
-
-div.jqcloud span { padding: 0; }
diff --git a/eca/__pycache__/__init__.cpython-310.pyc b/eca/__pycache__/__init__.cpython-310.pyc
index fbcc841..680cfe4 100644
Binary files a/eca/__pycache__/__init__.cpython-310.pyc and b/eca/__pycache__/__init__.cpython-310.pyc differ
diff --git a/eca/__pycache__/arff.cpython-310.pyc b/eca/__pycache__/arff.cpython-310.pyc
new file mode 100644
index 0000000..dab7427
Binary files /dev/null and b/eca/__pycache__/arff.cpython-310.pyc differ
diff --git a/eca/__pycache__/generators.cpython-310.pyc b/eca/__pycache__/generators.cpython-310.pyc
new file mode 100644
index 0000000..01498c6
Binary files /dev/null and b/eca/__pycache__/generators.cpython-310.pyc differ
diff --git a/eca/__pycache__/http.cpython-310.pyc b/eca/__pycache__/http.cpython-310.pyc
index 5fb9f1d..0d3ed98 100644
Binary files a/eca/__pycache__/http.cpython-310.pyc and b/eca/__pycache__/http.cpython-310.pyc differ
diff --git a/eca/__pycache__/httpd.cpython-310.pyc b/eca/__pycache__/httpd.cpython-310.pyc
index 81aa9a1..8f5eeb1 100644
Binary files a/eca/__pycache__/httpd.cpython-310.pyc and b/eca/__pycache__/httpd.cpython-310.pyc differ
diff --git a/eca/__pycache__/pubsub.cpython-310.pyc b/eca/__pycache__/pubsub.cpython-310.pyc
index d7147d2..fc16216 100644
Binary files a/eca/__pycache__/pubsub.cpython-310.pyc and b/eca/__pycache__/pubsub.cpython-310.pyc differ
diff --git a/eca/__pycache__/sessions.cpython-310.pyc b/eca/__pycache__/sessions.cpython-310.pyc
index 1f9d32f..61ce819 100644
Binary files a/eca/__pycache__/sessions.cpython-310.pyc and b/eca/__pycache__/sessions.cpython-310.pyc differ
diff --git a/eca/__pycache__/sse.cpython-310.pyc b/eca/__pycache__/sse.cpython-310.pyc
index 59c80ac..66c2e6d 100644
Binary files a/eca/__pycache__/sse.cpython-310.pyc and b/eca/__pycache__/sse.cpython-310.pyc differ
diff --git a/eca/__pycache__/util.cpython-310.pyc b/eca/__pycache__/util.cpython-310.pyc
index c76e648..fcd93e4 100644
Binary files a/eca/__pycache__/util.cpython-310.pyc and b/eca/__pycache__/util.cpython-310.pyc differ