public void step(SimState state) {

        Sim.instance().clearOGroups();

        Bag freshmen = new Bag();

        for(int i = 0; i < Sim.FRESHMAN_CLASS_SIZE; i++){
            Student.Race race;
            Student.Gender gender;
            float racePercent = Sim.instance().random.nextFloat();
            if(racePercent>Sim.PROB_MINORITY){
                race = Student.Race.WHITE;
            }else{
                race = Student.Race.MINORITY;
            }
            double gpa = Sim.instance().random.nextDouble()+(Sim.instance().random.nextInt(3)+1);
            float genderPercent = Sim.instance().random.nextFloat();
            if(genderPercent < .65){
                gender = Student.Gender.FEMALE;
            }
            else{
                gender = Student.Gender.MALE; 
            }
            Student student = new Student(gender,1,gpa,race);

            //give student attributes
            for(int x=0; x<Sim.instance().NUM_PERSONALITY_ATTRIBUTES; x++){
                float attrPercent = state.random.nextFloat();
                if(attrPercent<Sim.PROB_ATTRIBUTE){
                    student.addAttribute(x);
                }
            }

            //assign student to O Group
            Sim.instance().assignOGroup(student);

            freshmen.add(student);
            state.schedule.scheduleOnceIn(1/12.0,student);
        }

        if(Sim.instance().HOUSING_BY_RACE){
            FreshmanHousingSelection.instance().assignByRace(freshmen);
        } else {
            FreshmanHousingSelection.instance().assign(freshmen);
        }
        Sim.instance().addStudents(freshmen);

        state.schedule.scheduleOnceIn(1, this);
    }