split into clined-desktop and asp.net versions