Grouping and Heuristics for A Multi-stage Class Timetabling System