final factored out: scene graph, desktop, core module