lots of interface tweaking