diff --git a/ilp-measurement.ipynb b/ilp-measurement.ipynb
index 8fd8468bcbc7d147697709dad50b17afe37ad397..ce6a712aecd4a8e24ad9635c43f88e9964d22b75 100644
--- a/ilp-measurement.ipynb
+++ b/ilp-measurement.ipynb
@@ -18,7 +18,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 2,
+   "execution_count": 15,
    "metadata": {
     "collapsed": false
    },
@@ -28,7 +28,7 @@
     "from datetime import datetime\n",
     "from itertools import *\n",
     "from operator import itemgetter\n",
-    "import json, sys, traceback, os, functools"
+    "import json, sys, traceback, os, functools, traceback"
    ]
   },
   {
@@ -294,7 +294,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 13,
+   "execution_count": 61,
    "metadata": {
     "collapsed": false,
     "scrolled": false
@@ -304,19 +304,19 @@
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "Loaded 1568 record(s) for update_normal_plt-r6rs (8x31 unique) ~= 6 run(s)\n",
+      "Loaded 1584 record(s) for update_normal_plt-r6rs (8x31 unique) ~= 6 run(s)\n",
       "Loaded 504 record(s) for update_flush_plt-r6rs (8x31 unique) ~= 2 run(s)\n",
       "Loaded 600 record(s) for update_noncached_plt-r6rs (8x31 unique) ~= 2 run(s)\n",
-      "Loaded 581 record(s) for sw_normal_plt-r6rs (7x31 unique) ~= 2 run(s)\n",
+      "Loaded 588 record(s) for sw_normal_plt-r6rs (7x31 unique) ~= 2 run(s)\n",
       "Loaded 245 record(s) for sw_flush_plt-r6rs (7x31 unique) ~= 1 run(s)\n",
       "Loaded 602 record(s) for sw_noncached_plt-r6rs (7x31 unique) ~= 2 run(s)\n",
-      "Loaded 577 record(s) for res_normal_plt-r6rs (7x31 unique) ~= 2 run(s)\n",
+      "Loaded 605 record(s) for res_normal_plt-r6rs (7x31 unique) ~= 2 run(s)\n",
       "Loaded 245 record(s) for res_flush_plt-r6rs (7x31 unique) ~= 1 run(s)\n",
       "Loaded 609 record(s) for res_noncached_plt-r6rs (7x31 unique) ~= 2 run(s)\n",
       "Loaded 242 record(s) for complex_normal_plt-r6rs (11x11 unique) ~= 2 run(s)\n",
       "Loaded 121 record(s) for complex_flush_plt-r6rs (11x11 unique) ~= 1 run(s)\n",
       "Loaded 121 record(s) for complex_noncached_plt-r6rs (11x11 unique) ~= 1 run(s)\n",
-      "Loaded 400 record(s) for mixed_normal_plt-r6rs (100x2 unique) ~= 2 run(s)\n",
+      "Loaded 803 record(s) for mixed_normal_plt-r6rs (100x2 unique) ~= 4 run(s)\n",
       "Loaded 359 record(s) for mixed_flush_plt-r6rs (100x2 unique) ~= 1 run(s)\n",
       "Loaded 200 record(s) for mixed_noncached_plt-r6rs (100x2 unique) ~= 1 run(s)\n",
       "Loaded 512 record(s) for update_normal_larceny (8x31 unique) ~= 2 run(s)\n",
@@ -360,7 +360,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 15,
+   "execution_count": 17,
    "metadata": {
     "collapsed": false,
     "scrolled": true
@@ -375,34 +375,39 @@
       "Loaded no data for res_java\n",
       "Loaded no data for complex_java\n",
       "Loaded no data for mixed_java\n",
-      "Loaded 1912 record(s) for update_glpk (8x31 unique) ~= 7 run(s)\n",
-      "Loaded 235 record(s) for sw_glpk (7x31 unique) ~= 1 run(s)\n"
-     ]
-    },
-    {
-     "ename": "IndexError",
-     "evalue": "tuple index out of range",
-     "output_type": "error",
-     "traceback": [
-      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
-      "\u001b[1;31mIndexError\u001b[0m                                Traceback (most recent call last)",
-      "\u001b[1;32m<ipython-input-15-af2bf1536a93>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[0mjava_glpk_dats\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mread_sol_results\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'java'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msince\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdatetime\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m2015\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m6\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m22\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mglpk_dats\u001b[0m      \u001b[1;33m=\u001b[0m \u001b[0mread_sol_results\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'glpk'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      3\u001b[0m \u001b[0mgurobi_dats\u001b[0m    \u001b[1;33m=\u001b[0m \u001b[0mread_sol_results\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'gurobi'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
-      "\u001b[1;32m<ipython-input-11-3738473b7378>\u001b[0m in \u001b[0;36mread_sol_results\u001b[1;34m(solver, since)\u001b[0m\n\u001b[0;32m      3\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mread_sol_results\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msolver\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msince\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      4\u001b[0m     return read_results('sol', solver, ('datetime64[us]', int, int, int, int, int, float, float), 7, since,\n\u001b[1;32m----> 5\u001b[1;33m                         splitted = split_change_only)\n\u001b[0m",
-      "\u001b[1;32m<ipython-input-10-b4f10b934785>\u001b[0m in \u001b[0;36mread_results\u001b[1;34m(prefix, name, dtype, data_column, since, splitted)\u001b[0m\n\u001b[0;32m     42\u001b[0m                 \u001b[0mnew_name\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m'{0}_{1}'\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mchange\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     43\u001b[0m                 \u001b[0mf\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m'profiling/splitted/{0}_{1}.csv'\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mprefix\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnew_name\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 44\u001b[1;33m                 \u001b[0mresult\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mchange\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mread_single_result\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnew_name\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata_column\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msince\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     45\u001b[0m         \u001b[1;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     46\u001b[0m     \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;31m# splitted = no_split\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
-      "\u001b[1;32m<ipython-input-10-b4f10b934785>\u001b[0m in \u001b[0;36mread_single_result\u001b[1;34m(f, name, dtype, data_column, since)\u001b[0m\n\u001b[0;32m     22\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mlen_dat\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     23\u001b[0m             print 'Loaded {0} record(s) for {1} ({2[0]}x{2[1]} unique) ~= {3} run(s)'.format(\n\u001b[1;32m---> 24\u001b[1;33m                 len_dat, name, dat2.shape, safe_div(len_dat,dat2.size))\n\u001b[0m\u001b[0;32m     25\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     26\u001b[0m             \u001b[1;32mprint\u001b[0m \u001b[1;34m'Loaded no data for {}'\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
-      "\u001b[1;31mIndexError\u001b[0m: tuple index out of range"
+      "Loaded 1928 record(s) for update_glpk (8x31 unique) ~= 7 run(s)\n",
+      "Loaded 241 record(s) for sw_glpk (7x31 unique) ~= 1 run(s)\n",
+      "Traceback (most recent call last):\n",
+      "  File \"<ipython-input-17-a9613a72d048>\", line 3, in <module>\n",
+      "    glpk_dats      = read_sol_results('glpk')\n",
+      "  File \"<ipython-input-11-3738473b7378>\", line 5, in read_sol_results\n",
+      "    splitted = split_change_only)\n",
+      "  File \"<ipython-input-10-b4f10b934785>\", line 44, in read_results\n",
+      "    result[change] = read_single_result(f, new_name, dtype, data_column, since)\n",
+      "  File \"<ipython-input-10-b4f10b934785>\", line 24, in read_single_result\n",
+      "    len_dat, name, dat2.shape, safe_div(len_dat,dat2.size))\n",
+      "IndexError: tuple index out of range\n",
+      "\n",
+      "Loaded 216 record(s) for update_gurobi (8x27 unique) ~= 1 run(s)\n",
+      "Loaded no data for sw_gurobi\n",
+      "Loaded no data for res_gurobi\n",
+      "Loaded no data for complex_gurobi\n",
+      "Loaded no data for mixed_gurobi\n"
      ]
     }
    ],
    "source": [
     "java_glpk_dats = read_sol_results('java', since = datetime(2015,6,22,0,0,0))\n",
-    "glpk_dats      = read_sol_results('glpk')\n",
+    "try:\n",
+    "    glpk_dats      = read_sol_results('glpk')\n",
+    "except:\n",
+    "    print(traceback.format_exc())\n",
     "gurobi_dats    = read_sol_results('gurobi')"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 18,
    "metadata": {
     "collapsed": true
    },
@@ -415,7 +420,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 19,
    "metadata": {
     "collapsed": false,
     "scrolled": false
@@ -481,7 +486,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 20,
    "metadata": {
     "collapsed": false
    },
@@ -541,7 +546,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 21,
    "metadata": {
     "collapsed": false,
     "scrolled": true
@@ -573,7 +578,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 22,
    "metadata": {
     "collapsed": true
    },
@@ -627,7 +632,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 23,
    "metadata": {
     "collapsed": true
    },
@@ -654,7 +659,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 24,
    "metadata": {
     "collapsed": false
    },
@@ -701,12 +706,37 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 27,
    "metadata": {
     "collapsed": false,
-    "scrolled": false
+    "scrolled": true
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "\n",
+      "java:\n",
+      " update,normal,flush,noncached\n",
+      " sw,normal,flush,noncached\n",
+      " res,normal,flush,noncached\n",
+      " mixed,normal,flush,noncached\n",
+      "\n",
+      "racket:\n",
+      " update,normal,flush,noncached\n",
+      " sw,normal,flush,noncached\n",
+      " res,normal,flush,noncached\n",
+      " mixed,normal,flush,noncached\n",
+      "\n",
+      "larceny:\n",
+      " update,normal,flush,noncached\n",
+      " sw,normal,flush,noncached\n",
+      " res,normal,flush,noncached\n",
+      " mixed,normal,flush,noncached\n"
+     ]
+    }
+   ],
    "source": [
     "for (data, name) in ((java_dats, 'java'), (racket_dats, 'racket'), (larceny_dats, 'larceny')):\n",
     "    sys.stdout.write('\\n{}:'.format(name))\n",
@@ -747,14 +777,16 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 28,
    "metadata": {
     "collapsed": false,
     "scrolled": false
    },
    "outputs": [],
    "source": [
-    "for (data, name) in ((java_glpk_dats, 'java'), (glpk_dats, 'scheme-glpk'), (gurobi_dats, 'glpk-gurobi')):\n",
+    "#for (data, name) in ((java_glpk_dats, 'java'), (glpk_dats, 'scheme-glpk'), (gurobi_dats, 'glpk-gurobi')):\n",
+    "## Skipped for now (Problems with reading solving times)\n",
+    "if False:\n",
     "    sys.stdout.write('\\n{}:'.format(name))\n",
     "#    change = 'mixed'\n",
     "#    if True:\n",
@@ -790,11 +822,22 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 29,
    "metadata": {
     "collapsed": false
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "\n",
+      " update\n",
+      " res\n",
+      " sw"
+     ]
+    }
+   ],
    "source": [
     "width = 0.6\n",
     "name  = 'racket'\n",
@@ -842,13 +885,15 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 32,
    "metadata": {
     "collapsed": false
    },
    "outputs": [],
    "source": [
-    "for (data, name) in ((java_glpk_dats, 'java'), (glpk_dats, 'glpk'), (gurobi_dats, 'gurobi')):\n",
+    "#for (data, name) in ((java_glpk_dats, 'java'), (glpk_dats, 'glpk'), (gurobi_dats, 'gurobi')):\n",
+    "## Skipped for now (Problems with reading solving times)\n",
+    "if False:\n",
     "    print name+':'\n",
     "    #change = 'update'\n",
     "    for change in kinds['changes']:\n",
@@ -878,7 +923,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 33,
    "metadata": {
     "collapsed": true
    },
@@ -914,12 +959,30 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 34,
    "metadata": {
     "collapsed": false,
     "scrolled": true
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Loaded 106 (0 zero-values) attribute metric run(s) from profiling/att-percentages.csv\n"
+     ]
+    },
+    {
+     "data": {
+      "text/plain": [
+       "dtype([('dir', '<f8'), ('normalBaseline', '<f8'), ('flushedBaseline', '<f8'), ('noncachedBaseline', '<f8'), ('ratioNormalToFlushed', '<f8'), ('ratioNormalToNoncached', '<f8'), ('ratioFlushedToNoncached', '<f8'), ('speedupNormalToFlushed', '<f8'), ('speedupNormalToNoncached', '<f8'), ('speedupFlushedToNoncached', '<f8')])"
+      ]
+     },
+     "execution_count": 34,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
    "source": [
     "att_dat = read_att_result()\n",
     "att_dat.dtype"
@@ -935,7 +998,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 35,
    "metadata": {
     "collapsed": false,
     "scrolled": false
@@ -969,7 +1032,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 36,
    "metadata": {
     "collapsed": false
    },
@@ -1003,7 +1066,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 37,
    "metadata": {
     "collapsed": false,
     "scrolled": true
@@ -1036,12 +1099,23 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 38,
    "metadata": {
     "collapsed": false,
     "scrolled": false
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Loaded 31 (0 zero-values) attribute metric run(s) from profiling/splitted/att-percentages_update.csv\n",
+      "Loaded 31 (0 zero-values) attribute metric run(s) from profiling/splitted/att-percentages_sw.csv\n",
+      "Loaded 31 (0 zero-values) attribute metric run(s) from profiling/splitted/att-percentages_res.csv\n",
+      "Loaded 2 (0 zero-values) attribute metric run(s) from profiling/splitted/att-percentages_mixed.csv\n"
+     ]
+    }
+   ],
    "source": [
     "att_totals = {change: read_att_result(name = 'profiling/splitted/att-percentages_{}.csv'.format(change),\n",
     "                                      adjust_number = False) for change in kinds['changes'] if change != 'complex'}"
@@ -1049,7 +1123,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 39,
    "metadata": {
     "collapsed": true
    },
@@ -1060,7 +1134,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 40,
    "metadata": {
     "collapsed": false
    },
@@ -1111,11 +1185,21 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 41,
    "metadata": {
     "collapsed": false
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Drawing cache-miss rate\n",
+      "Drawing ratios\n",
+      "Drawing speed-ups\n"
+     ]
+    }
+   ],
    "source": [
     "def baseline(x):\n",
     "    return '{}Baseline'.format('flushed' if x == 'flush' else x)\n",
@@ -1138,7 +1222,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 42,
    "metadata": {
     "collapsed": true
    },
@@ -1172,7 +1256,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 43,
    "metadata": {
     "collapsed": false
    },
@@ -1181,6 +1265,80 @@
     "draw_att_graph('mixed', '001')\n",
     "draw_att_graph('mixed', '001', log = True)"
    ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Graph for memory measurement"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 138,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "def draw_mem_graph(kind, nr):\n",
+    "    global dat_mem\n",
+    "    f = 'profiling/{0}-{1}/memory.csv'.format(kind, nr)\n",
+    "    print f\n",
+    "    def cv_date(x):\n",
+    "#        return datetime.strptime(x, '%Y-%m-%dT%H:%M:%S.%f')\n",
+    "        return (datetime.strptime(x, '%Y-%m-%dT%H:%M:%S.%f') - datetime(1970,1,1)).total_seconds()\n",
+    "    def cv_mem(x):\n",
+    "        return int(x) / 1024\n",
+    "    raw_data = []\n",
+    "    with open(f) as fd:\n",
+    "        next(fd)\n",
+    "        for l in fd:\n",
+    "            toks = l.split(',')\n",
+    "            raw_data.append((cv_date(toks[0]), cv_mem(toks[1])))\n",
+    "\n",
+    "#    dat = np.genfromtxt(f, delimiter=',', names=True, dtype = ('datetime64[us]', int),\n",
+    "#                        converters={'timestamp': cv_date, 'vmsize':cv_mem})\n",
+    "##    print raw_data\n",
+    "    dat_mem = np.array(raw_data, dtype = [('timestamp', int), ('vmsize', int)])\n",
+    "#    dat_mem.dtype.names = 'timestamp', 'vmsize'\n",
+    "    try:\n",
+    "        plt.plot(dat_mem['vmsize'])\n",
+    "        plt.ylabel('VmSize (MB)')\n",
+    "        plt.xlabel('Time (Seconds)')\n",
+    "#        plt.legend(loc='best')\n",
+    "        fname_part = 'memory_{0}-{1}'.format(kind,nr)\n",
+    "        plt.savefig('doc/{}.pdf'.format(fname_part))\n",
+    "        !pdfcrop {'doc/{}.pdf'.format(fname_part)} {'doc/{}_cropped.pdf'.format(fname_part)} > /dev/null\n",
+    "        plt.savefig('pngs/{}.png'.format(fname_part))\n",
+    "    except Exception as e:\n",
+    "        print 'Error while drawing memory graph for {0}: {1}'.format(kind, e)\n",
+    "        traceback.print_exc(file=sys.stdout)\n",
+    "    finally:\n",
+    "        plt.close()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 139,
+   "metadata": {
+    "collapsed": false,
+    "scrolled": true
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "profiling/mixed-001/memory.csv\n",
+      "profiling/mixed-002/memory.csv\n"
+     ]
+    }
+   ],
+   "source": [
+    "draw_mem_graph('mixed', '001')\n",
+    "draw_mem_graph('mixed', '002')"
+   ]
   }
  ],
  "metadata": {
diff --git a/ilp-measurement.scm b/ilp-measurement.scm
index 47ecca66f385f6523d9556fa25fe6a3f6fa3e903..2813013a28923bf4d48e7336114978cfaa70a389 100644
--- a/ilp-measurement.scm
+++ b/ilp-measurement.scm
@@ -81,10 +81,6 @@
                                 (cons* (dirname "update-" (car l))  update-test rest)
                                 all)))
        (list) raw-params))
-     ; complex params
-     (map (lambda (l) (append (cons* (dirname "complex-" (car l)) complex-test (cdr l))
-                              (list (list (lambda _ #t) #f #f #f))))
-          raw-short-params)
      ; mixed params
      (map (lambda (l) (append (cons* (dirname "mixed-" (car l)) mixed-test (cdr l))
                               (list (list (lambda _ #t) #f #f #f))))
diff --git a/ilp_measurement.py b/ilp_measurement.py
index 8f02a7eea858297bb062cbfdfe006d720e71387a..de3a147190dd0a08564d6235228285e404e83ab1 100644
--- a/ilp_measurement.py
+++ b/ilp_measurement.py
@@ -139,8 +139,9 @@ def do_gen(call_impl, number, dirs, memory = False):
             print '\n'
 #			conflate_results(skip_sol = True)
 
-def dstat_log(directory): return 'profiling/{}/dstat.log'.format(directory)
-def memory_log(directory): return 'profiling/{}/memory.csv'.format(directory)
+def timestamp_filename(): return datetime.now().strftime('%Y-%m-%dT%H-%M-%S')
+def dstat_log(directory): return 'profiling/{0}/dstat-{1}.log'.format(directory, timestamp_filename())
+def memory_log(directory): return 'profiling/{0}/memory-{1}.csv'.format(directory, timestamp_filename())
 
 def dirname(d): return os.path.split(os.path.dirname(d))[-1]
 
@@ -467,7 +468,7 @@ def check():
     with open('dependencies.txt') as fd:
         if 'ilp-noncached\n' in fd:
             noncached_scm = True
-    print 'Evaluation is set to:\n'+'\n- '.join((
+    print '\n- '.join(( 'Evaluation is set to:',
         red('non-cached') if properties.noncached.value else 'cached',
         red('flushed') if properties.flushed.value else 'unflushed',
         (green('Yes: ') if properties.timing.value else 'No ') + 'measurement of execution times',