split UI and backend into 2 modules