desktop version mostly done