lots and lots of interface/rendering work