public void Initialize()
    {
        if (!SteamManager.initializedMain)
        {
            return;
        }

        m_GameRichPresenceJoinRequested = Steamworks.Callback <GameRichPresenceJoinRequested_t> .Create(OnGameRichPresenceJoinRequested);

        m_PersonaStateChange = Steamworks.Callback <PersonaStateChange_t> .Create(OnPersonaStateChange);

        EFriendFlags friendFlags  = EFriendFlags.k_EFriendFlagImmediate;
        int          friendsCount = SteamFriends.GetFriendCount(friendFlags);

        for (int friendIndex = 0; friendIndex < friendsCount; ++friendIndex)
        {
            CSteamID friendSteamId = SteamFriends.GetFriendByIndex(friendIndex, friendFlags);

            if (!friendSteamId.IsValid())
            {
                continue;
            }

            SteamFriend steamFriend = new SteamFriend(friendSteamId);
            m_Friends.Add(friendSteamId, steamFriend);
        }
    }
    // INTERNALS

    // IAchievementsModuleImpl's interface

    public void Initialize(AchievementsDatabaseManager i_AchievementsManager)
    {
        m_AchievementsManager = i_AchievementsManager;

        m_UserStatsReceived = Steamworks.Callback <UserStatsReceived_t> .Create(OnUserStatsReceived);

        m_GameId = new CGameID(SteamAppInfo.s_AppId);
    }
    // IStatsModule's interface

    public void Initialize(UserStatsManager i_UserStatsManager, RemoteStatsMapper i_RemoteStatsMapper)
    {
        if (!SteamManager.initializedMain)
        {
            return;
        }

        m_UserStatsManager  = i_UserStatsManager;
        m_RemoteStatsMapper = i_RemoteStatsMapper;

        m_StatsValid = false;

        m_UserStatsReceived = Steamworks.Callback <UserStatsReceived_t> .Create(OnUserStatsReceived);

        m_GameId = new CGameID(SteamAppInfo.s_AppId);
    }