refactor curriculum parser with proper data structor and awful logic