restructured frontend (again)