Relaunch

major refactoring and client cleanup
@dknochen you should have used `git mv` here but I guess that's fine. It's just that it's make it hard to review.