/************************************************************
     * Helper Methods
     ************************************************************/
    private void UpdateUserModelProperty(Guid uid, UserModelField userModelField, System.Object obj = null)
    {
        // Loop through every model looking for the correct Guid
        for (int i = 0; i < _userModels.Count; i++) {

            // When Guid found, modify the corresponding field in the model
            if (_userModels[i].Uid == uid) {
                switch (userModelField) {
                    case UserModelField.Ping:
                        _userModels[i].Ping = (int)obj;
                        break;
                    case UserModelField.Weapon:
                        _userModels[i].Weapon = (int)obj;
                        UserModelWeaponChangeListener(i, uid);
                        break;
                    case UserModelField.Kills:
                        _userModels[i].Kills = (int)obj;
                        break;
                    case UserModelField.KillsIncrement:
                        _userModels[i].Kills++;
                        break;
                    case UserModelField.Deaths:
                        _userModels[i].Deaths = (int)obj;
                        break;
                    case UserModelField.DeathsIncrement:
                        _userModels[i].Deaths++;
                        break;
                    case UserModelField.Dead:
                        _userModels[i].Dead = (bool)obj;
                        break;
                    case UserModelField.Money:
                        _userModels[i].Money = (int)obj;
                        break;
                    case UserModelField.MoneyIncrement:
                        _userModels[i].Money += (int)obj;
                        break;
                    case UserModelField.Points:
                        _userModels[i].Points = (int)obj;
                        break;
                    case UserModelField.PointsIncrement:
                        _userModels[i].Points += (int)obj;
                        break;
                    case UserModelField.ColorIndex:
                        _userModels[i].ColorIndex = (int)obj;
                        break;
                    case UserModelField.NextTeam:
                        _userModels[i].NextTeam = (int)obj;
                        UserModelTeamChangeListener(i);
                        break;
                    case UserModelField.CurrentTeam:
                        _userModels[i].CurrentTeam = (int)obj;
                        break;
                    case UserModelField.Username:
                        _userModels[i].UserName = (string)obj;
                        break;
                    case UserModelField.Uid:
                        _userModels[i].Uid = new Guid((string)obj);
                        break;
                    case UserModelField.NetworkIdHash:
                        _userModels[i].NetworkIdHash = (int)obj;
                        break;
                }
                break;
            }
        }
    }
    public void UpdateUserModelForAll(Guid uid, UserModelField field, System.Object obj = null)
    {
        var fieldParam = (int)field;
        string serialization = "";

        if (obj != null) {
            var memoryStream = new MemoryStream();
            new BinaryFormatter().Serialize(memoryStream, obj);
            serialization = Convert.ToBase64String(memoryStream.GetBuffer());
        }

        UpdateUserModelProperty(uid, field, obj);

        networkView.RPC("UpdateUserModelRpc", RPCMode.Others, new object[]
        {
            uid.ToString(),
            fieldParam,
            serialization
        });
    }