pair<IParticleGroup*,IRenderNode*> ParticleGroupBuilder::BuildGroup(PropertyList& plist, string group) {
    string type = plist.GetString(group + ".type");
    if (type == "glow") {
        
        Emitter<ParticleTypeGlow >* emitter = BuildEmitter<ParticleTypeGlow >(plist, group);
        EnergyParticleGroup<ParticleTypeGlow > *particleGroup = new EnergyParticleGroup<ParticleTypeGlow >(plist.GetInt(group + ".count"), emitter);
        
        // modifiers
        for (int i=0; i < plist.ListSize(group + ".modifiers"); i++ ) {
            string name = plist.GetString(group + ".modifiers", i);
            logger.info << "Adding modifier: " << name << logger.end;
            IModifier<ParticleTypeGlow >* mof = BuildModifier<ParticleTypeGlow >(plist, group + "." + name);
            if (mof != NULL)
                particleGroup->AddModifier(mof);
            
        }

        plist.SetIntP(&(particleGroup->totalCount), group + ".count");
        plist.SetBoolP(&(particleGroup->active), group + ".active");

        int *m = (int*)&(particleGroup->mode);
        plist.SetIntP(m, group + ".mode");
        
        // TwEnumVal modeEV[] = {{EnergyParticleGroup::CONTINUOUS, "Continuous"},
//                               {EnergyParticleGroup::ALL, "All"},
//                               {EnergyParticleGroup::NONE, "None"}};
//         TwType modeType = TwDefineEnum("RespawnMode", modeEV, 3);
        
    
        
        return make_pair(particleGroup,BuildRenderNode<ParticleTypeGlow,EnergyParticleGroup<ParticleTypeGlow> >(plist, group, particleGroup));
    } else {
        logger.info << "Unknown type: " << type << logger.end;
    }
    
    return make_pair<IParticleGroup*,IRenderNode*>(NULL,NULL);
}