This reverts commit f72475b557, reversing changes made to 0c89c85aae. Sorry Generic this branch is really cool but it needs more work. I shouldn't have merged it too early...
f72475b557
0c89c85aae