Fixed a lot of things. Rewrote Desktop implementation