UI: split out jg graphics into seperate modules