public string handTip = "HandMiddle"; // finger, not finger base
	
	/*
	 * Return a new BipedNamingConvention using Max Biped names
	 * */
	public static BipedNamingConvention Max(string characterNamePrefix)
	{
		BipedNamingConvention names = new BipedNamingConvention();
		names.characterNamePrefix = characterNamePrefix;
		names.centerPrefix = "";
		names.leftPrefix = "L ";
		names.rightPrefix = "R ";
		names.head = "Head";
		names.neck = "Neck";
		names.spine = "Spine";
		names.pelvis = "Pelvis";
		names.upperLeg = "Thigh";
		names.lowerLeg = "Calf";
		names.foot = "Foot";
		names.toe = "Toe"; // toe, not toe base
		names.collar = "Clavicle";
		names.upperArm = "UpperArm";
		names.forearm = "Forearm";
		names.hand = "Hand";
		names.handTip = "Finger"; // finger, not finger base
		return names;
	}
    /*
     * Return a new BipedNamingConvention using Maya names
     * */
    public static BipedNamingConvention Maya()
    {
        BipedNamingConvention names = new BipedNamingConvention();

        names.characterNamePrefix = "";
        names.centerPrefix        = "Center";
        names.leftPrefix          = "Left";
        names.rightPrefix         = "Right";
        names.head     = "Head";
        names.neck     = "Neck";
        names.spine    = "Spine";
        names.pelvis   = "Root";
        names.upperLeg = "Hip";
        names.lowerLeg = "Knee";
        names.foot     = "Foot";
        names.toe      = "Toe";    // toe, not toe base
        names.collar   = "Collar";
        names.upperArm = "Shoulder";
        names.forearm  = "Elbow";
        names.hand     = "Hand";
        names.handTip  = "MiddleFinger";        // finger, not finger base
        return(names);
    }
    public string handTip  = "HandMiddle";    // finger, not finger base

    /*
     * Return a new BipedNamingConvention using Max Biped names
     * */
    public static BipedNamingConvention Max(string characterNamePrefix)
    {
        BipedNamingConvention names = new BipedNamingConvention();

        names.characterNamePrefix = characterNamePrefix;
        names.centerPrefix        = "";
        names.leftPrefix          = "L ";
        names.rightPrefix         = "R ";
        names.head     = "Head";
        names.neck     = "Neck";
        names.spine    = "Spine";
        names.pelvis   = "Pelvis";
        names.upperLeg = "Thigh";
        names.lowerLeg = "Calf";
        names.foot     = "Foot";
        names.toe      = "Toe";    // toe, not toe base
        names.collar   = "Clavicle";
        names.upperArm = "UpperArm";
        names.forearm  = "Forearm";
        names.hand     = "Hand";
        names.handTip  = "Finger";        // finger, not finger base
        return(names);
    }
    /*
     * Return a new biped naming convention using HumanIK names
     * */
    public static BipedNamingConvention HumanIK()
    {
        BipedNamingConvention names = new BipedNamingConvention();

        names.characterNamePrefix = "";
        names.centerPrefix        = "";
        names.leftPrefix          = "Left";
        names.rightPrefix         = "Right";
        names.head     = "Head";
        names.neck     = "Neck";
        names.spine    = "Spine";
        names.pelvis   = "Hips";
        names.upperLeg = "UpLeg";
        names.lowerLeg = "Leg";
        names.foot     = "Foot";
        names.toe      = "FootMiddle";    // toe, not toe base
        names.collar   = "Shoulder";
        names.upperArm = "Arm";
        names.forearm  = "ForeArm";
        names.hand     = "Hand";
        names.handTip  = "HandMiddle";        // finger, not finger base
        return(names);
    }
	/*
	 * Return a new BipedNamingConvention using Maya names
	 * */
	public static BipedNamingConvention Maya()
	{
		BipedNamingConvention names = new BipedNamingConvention();
		names.characterNamePrefix = "";
		names.centerPrefix = "Center";
		names.leftPrefix = "Left";
		names.rightPrefix = "Right";
		names.head = "Head";
		names.neck = "Neck";
		names.spine = "Spine";
		names.pelvis = "Root";
		names.upperLeg = "Hip";
		names.lowerLeg = "Knee";
		names.foot = "Foot";
		names.toe = "Toe"; // toe, not toe base
		names.collar = "Collar";
		names.upperArm = "Shoulder";
		names.forearm = "Elbow";
		names.hand = "Hand";
		names.handTip = "MiddleFinger"; // finger, not finger base
		return names;
	}
	/*
	 * Return a new biped naming convention using HumanIK names
	 * */
	public static BipedNamingConvention HumanIK()
	{
		BipedNamingConvention names = new BipedNamingConvention();
		names.characterNamePrefix = "";
		names.centerPrefix = "";
		names.leftPrefix = "Left";
		names.rightPrefix = "Right";
		names.head = "Head";
		names.neck = "Neck";
		names.spine = "Spine";
		names.pelvis = "Hips";
		names.upperLeg = "UpLeg";
		names.lowerLeg = "Leg";
		names.foot = "Foot";
		names.toe = "FootMiddle"; // toe, not toe base
		names.collar = "Shoulder";
		names.upperArm = "Arm";
		names.forearm = "ForeArm";
		names.hand = "Hand";
		names.handTip = "HandMiddle"; // finger, not finger base
		return names;
	}
	/*
	 * Automate setup using the naming convention of the specified DCC application
	 * Pass in DCCApplication.Custom if you have pre-defined a namingConvention on this Biped
	 * */
	public void AutomateSetup(DCCApplication fromApplication)
	{
		switch (fromApplication)
		{
		case DCCApplication.Max:
			namingConvention = BipedNamingConvention.Max(BipedHelpers.FindCharacterNamePrefixOnMaxBiped(this));
			break;
		case DCCApplication.Maya:
			namingConvention = BipedNamingConvention.Maya();
			break;
		case DCCApplication.HumanIK:
			namingConvention = BipedNamingConvention.HumanIK();
			break;
		}
		FindBonesUsingNamingConvention();
		if (ValidateMinimumRequirements())
		{
			if (anim==null) anim = GetComponentInChildren<Animation>();
			MapSymmetry(true);
			SetParentParts();
			SetDefaultColliders();
			SetDefaultJoints(true);
			DistributeMass();
		}
	}