UI refactor

Here for review, **don't merge yet**

Contains #176 #177 #178 #180 #181 #182 #184

@tpetr