Lots of API tweaks and prettyfication