pushed some things from ui to core to allow reuse in the dfs plugins.
Needs more work, things aren't cleanly separated here.