diff --git a/src/eventTool.js b/src/eventTool.js
index a384d2f9aee1343b157354dafabf0bc560ebb504..1b67f062c9c080c20676a0dd52ffada6cf03bed0 100644
--- a/src/eventTool.js
+++ b/src/eventTool.js
@@ -170,6 +170,7 @@ export class EventTable {
       resource: 'events',
       keys: config.tableKeys,
       titles: config.tableKeys.map(key => config.keyDescriptors[key] || key),
+      onAdd: () => { m.route.set('/newevent'); },
     });
   }
 }
diff --git a/src/index.js b/src/index.js
index e6440e6d982c77871091e97a143d395784834f28..3ce561242f5ab739b15d3e0d66a971958a81ec28 100644
--- a/src/index.js
+++ b/src/index.js
@@ -34,11 +34,11 @@ function layoutWith(view) {
 m.route(root, '/users', {
   '/users': layoutWith(UserTable),
   '/users/:id': layoutWith(UserModal),
-  '/newusers': layoutWith(NewUser),
+  '/newuser': layoutWith(NewUser),
   '/groupmemberships/:id': layoutWith(MembershipView),
   '/events': layoutWith(EventTable),
   '/events/:id': layoutWith(EventModal),
-  '/newevents': layoutWith(NewEvent),
+  '/newevent': layoutWith(NewEvent),
   '/groups': layoutWith({
     view() {
       return m(TableView, {
diff --git a/src/userTool.js b/src/userTool.js
index e54d91d8c9501271f7b86434ab017244da148aa6..78d331d8722801d32edd4a59be18c1746f5e9007 100644
--- a/src/userTool.js
+++ b/src/userTool.js
@@ -159,6 +159,7 @@ export class UserTable {
       resource: 'users',
       keys: config.tableKeys,
       titles: config.tableKeys.map(key => config.keyDescriptors[key] || key),
+      onAdd: () => { m.route.set('/newuser'); },
     });
   }
 }
diff --git a/src/views/tableView.js b/src/views/tableView.js
index 33a29c0046c007bdbb3896f1a21091c6575ecda7..99cc1c220812587dd39b927a14ab47fe179a37d0 100644
--- a/src/views/tableView.js
+++ b/src/views/tableView.js
@@ -45,6 +45,7 @@ export default class TableView {
       titles,
       resource,
       query = false,
+      onAdd = () => {},
     },
   }) {
     this.items = [];
@@ -53,6 +54,7 @@ export default class TableView {
     this.resource = resource;
     // the querystring is either given or will be parsed from the url
     this.query = query || m.route.param();
+    this.onAdd = onAdd;
   }
 
   // definitions of query parameters in addition to API go here
@@ -129,7 +131,7 @@ export default class TableView {
         ]),
         m('div.col-xs-4', [
           m('div.btn.btn-default', {
-            onclick: () => { m.route.set(`/new${this.resource}`); },
+            onclick: () => { this.onAdd(); },
           }, 'New'),
         ]),
       ]),