new desktop model

(need to complete multi-desktop commit)