backend: dynamically creates timetable