public void LoadProfile( KinectPuppetProfile profile )
    {
        print("LOADING: " + profile.m_Name );

        m_Profile = profile;
        m_Profile.Load();       

        for (int i = 0; i < m_PuppetParts.Length; i++)
        {
            int index = m_Profile.m_PartIndecies[i];

            if( index != 99 )
            {
                if (m_PuppetParts[i] != null)
                    Destroy(m_PuppetParts[i].gameObject);

                if (index >= KinectPuppet_Manager.Instance.m_BodyParts[i].m_Parts.Length)
                    continue;

                BodyPart part = Instantiate(KinectPuppet_Manager.Instance.m_BodyParts[i].m_Parts[index]) as BodyPart;
                m_PuppetParts[i] = part;
                part.m_Puppet = this;

                part.transform.SetParent(transform);
            }
        }

        print("Loaded: " + profile.m_Name);
    }
	// Use this for initialization
	public void Initialize ( KinectPuppetProfile prof )
    {
        m_Profile = prof;

        m_PuppetParts = new BodyPart[KinectPuppet_Manager.Instance.m_BodyParts.Length];
        
        Spawn();
	}
    void CreateNewProfile(string name, bool loadToPuppet )
    {
        print("Creating profile: " + name);
        if (name == "")
            return;

        bool alreadyExists = false;

        foreach (KinectPuppetProfile p in m_PuppetProfiles)
            if (p.m_Name == name)
                alreadyExists = true;

        if (!alreadyExists)
        {
            KinectPuppetProfile profile = new KinectPuppetProfile(name);
            m_PuppetProfiles.Add(profile);

            if (loadToPuppet)
                m_Puppets[0].LoadProfile(profile);
        }

        m_GUI.UpdateProfileList(m_PuppetProfiles);
    }