diff --git a/src/views/tableView.js b/src/views/tableView.js
index 5d6b65a99cb2008f03ce6e2515768eb1300d93ff..33a29c0046c007bdbb3896f1a21091c6575ecda7 100644
--- a/src/views/tableView.js
+++ b/src/views/tableView.js
@@ -4,15 +4,20 @@ const m = require('mithril');
 
 class TableRow {
   // A row in the Table specified below.
-  view(vnode) {
+  view({
+    attrs: {
+      showKeys,
+      data,
+    },
+  }) {
     return m(
       'tr',
-      { onclick() { m.route.set(`/${vnode.attrs.data._links.self.href}`); } },
-      vnode.attrs.show_keys.map((key) => {
+      { onclick() { m.route.set(`/${data._links.self.href}`); } },
+      showKeys.map((key) => {
         // Access a nested key, indicated by dot-notation
-        let data = vnode.attrs.data;
-        key.split('.').forEach((subKey) => { data = data[subKey]; });
-        return m('td', data);
+        let nestedData = data;
+        key.split('.').forEach((subKey) => { nestedData = nestedData[subKey]; });
+        return m('td', nestedData);
       }),
     );
   }
@@ -34,17 +39,20 @@ export default class TableView {
    *       https://docs.mongodb.com/v3.2/reference/operator/query/
    *       e.g. : { where: {name: somename } }
    */
-  constructor(vnode) {
+  constructor({
+    attrs: {
+      keys,
+      titles,
+      resource,
+      query = false,
+    },
+  }) {
     this.items = [];
-    this.show_keys = vnode.attrs.keys;
-    this.titles = vnode.attrs.titles || this.show_keys;
-    this.resource = vnode.attrs.resource;
+    this.showKeys = keys;
+    this.titles = titles || keys;
+    this.resource = resource;
     // the querystring is either given or will be parsed from the url
-    if (vnode.attrs.query) {
-      this.query = vnode.attrs.query;
-    } else {
-      this.query = m.route.param();
-    }
+    this.query = query || m.route.param();
   }
 
   // definitions of query parameters in addition to API go here
@@ -58,7 +66,7 @@ export default class TableView {
     if ('search' in this.query && this.query.search.length > 0) {
       // translate search into where, we just look if any field contains search
       const searchQuery = {
-        $or: this.show_keys.map((key) => {
+        $or: this.showKeys.map((key) => {
           const fieldQuery = {};
           fieldQuery[key] = this.query.search;
           return fieldQuery;
@@ -128,7 +136,7 @@ export default class TableView {
       m('table.table.table-hover', [
         m('thead', m('tr', this.titles.map(title => m('th', title)))),
         m('tbody', this.items.map(item =>
-          m(TableRow, { show_keys: this.show_keys, data: item }))),
+          m(TableRow, { showKeys: this.showKeys, data: item }))),
       ]),
     ]);
   }