Index: binary-improvements/7dtd-server-fixes/src/API.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/API.cs	(revision 232)
+++ binary-improvements/7dtd-server-fixes/src/API.cs	(revision 233)
@@ -13,13 +13,13 @@
 		}
 		
-		public override void SavePlayerData (int _clientId, PlayerDataFile _playerDataFile) {
-			PlayerDataStuff.GM_SavePlayerData (_clientId, _playerDataFile);
+		public override void SavePlayerData (ClientInfo _cInfo, PlayerDataFile _playerDataFile) {
+			PlayerDataStuff.GM_SavePlayerData (_cInfo, _playerDataFile);
 		}
 
-		public override void PlayerLogin (int _clientId, string _name, string _playerId, string _token, string _compatibilityVersion) {
+		public override void PlayerLogin (ClientInfo _cInfo, string _compatibilityVersion) {
 		}
 		
-		public override void PlayerSpawning (int _clientId, string _name, int _chunkViewDim, PlayerProfile _playerProfile) {
-			AllocsLogFunctions.RequestToSpawnPlayer (_clientId, _name, _chunkViewDim, _playerProfile);
+		public override void PlayerSpawning (ClientInfo _cInfo, int _chunkViewDim, PlayerProfile _playerProfile) {
+			AllocsLogFunctions.RequestToSpawnPlayer (_cInfo, _chunkViewDim, _playerProfile);
 		}
 		
Index: binary-improvements/7dtd-server-fixes/src/AllocsLogFunctions.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/AllocsLogFunctions.cs	(revision 232)
+++ binary-improvements/7dtd-server-fixes/src/AllocsLogFunctions.cs	(revision 233)
@@ -8,17 +8,15 @@
 	public class AllocsLogFunctions
 	{
-		public static void RequestToSpawnPlayer (int _clientId, string _name, int _chunkViewDim, PlayerProfile _playerProfile)
+		public static void RequestToSpawnPlayer (ClientInfo _cInfo, int _chunkViewDim, PlayerProfile _playerProfile)
 		{
 			try {
-				ClientInfo ci = ConnectionManager.Instance.GetClient (_clientId);
-
-				Log.Out ("Player connected, clientid=" + _clientId +
-					", entityid=" + ci.entityId +
-					", name=" + ci.playerName +
-					", steamid=" + ci.playerId +
-					", ip=" + ci.ip
+				Log.Out ("Player connected" +
+					", entityid=" + _cInfo.entityId +
+					", name=" + _cInfo.playerName +
+					", steamid=" + _cInfo.playerId +
+					", ip=" + _cInfo.ip
 				);
 
-				PersistentContainer.Instance.Players [ci.playerId].SetOnline (ci);
+				PersistentContainer.Instance.Players [_cInfo.playerId, true].SetOnline (_cInfo);
 				PersistentData.PersistentContainer.Instance.Save ();
 			} catch (Exception e) {
@@ -30,5 +28,5 @@
 		{
 			try {
-				Player p = PersistentContainer.Instance.Players [_cInfo.playerId];
+				Player p = PersistentContainer.Instance.Players [_cInfo.playerId, true];
 				if (p != null) {
 					p.SetOffline ();
Index: binary-improvements/7dtd-server-fixes/src/AssemblyInfo.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/AssemblyInfo.cs	(revision 232)
+++ binary-improvements/7dtd-server-fixes/src/AssemblyInfo.cs	(revision 233)
@@ -18,5 +18,5 @@
 // and "{Major}.{Minor}.{Build}.*" will update just the revision.
 
-[assembly: AssemblyVersion("0.11.3.0")]
+[assembly: AssemblyVersion("0.11.4.0")]
 
 // The following attributes are used to specify the signing key for the assembly, 
Index: binary-improvements/7dtd-server-fixes/src/PersistentData/Player.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/PersistentData/Player.cs	(revision 232)
+++ binary-improvements/7dtd-server-fixes/src/PersistentData/Player.cs	(revision 233)
@@ -20,4 +20,6 @@
 		private int
 			lastPositionX, lastPositionY, lastPositionZ;
+		[OptionalField]
+		private uint experience;
 		[NonSerialized]
 		private ClientInfo
@@ -94,4 +96,18 @@
 		}
 
+		public uint Experience {
+			get {
+				return experience;
+			}
+		}
+
+		public float Level {
+			get {
+				float perc = (float)experience / 600000;
+				perc = Mathf.Sqrt (perc);
+				return Mathf.Clamp ((perc * 60) + 1, 1, 60);
+			}
+		}
+
 		public void SetOffline ()
 		{
@@ -121,4 +137,9 @@
 		}
 
+		public void Update (PlayerDataFile _pdf) {
+			experience = _pdf.experience;
+			inventory.Update (_pdf);
+		}
+
 		public Player (string steamId)
 		{
Index: binary-improvements/7dtd-server-fixes/src/PersistentData/Players.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/PersistentData/Players.cs	(revision 232)
+++ binary-improvements/7dtd-server-fixes/src/PersistentData/Players.cs	(revision 233)
@@ -11,10 +11,10 @@
 		private Dictionary<string, Player> players = new Dictionary<string, Player> ();
 
-		public Player this [string steamId] {
+		public Player this [string steamId, bool create] {
 			get {
 				if (players.ContainsKey (steamId))
 					return players [steamId];
 				else {
-					if (steamId != null && steamId.Length == 17) {
+					if (create && steamId != null && steamId.Length == 17) {
 						Log.Out ("Created new player entry for ID: " + steamId);
 						Player p = new Player (steamId);
@@ -35,22 +35,12 @@
 		}
 
-		public Player GetPlayerByClientId (int _clientid)
-		{
-			foreach (Player p in players.Values) {
-				if (p.ClientInfo != null && p.ClientInfo.clientId == _clientid) {
-					return p;
-				}
-			}
-			return null;
-		}
-
-		public Player GetPlayerByNameOrId (string _nameOrId, bool _ignoreColorCodes)
-		{
-			string sid = GetSteamID (_nameOrId, _ignoreColorCodes);
-			if (sid != null)
-				return this [sid];
-			else
-				return null;
-		}
+//		public Player GetPlayerByNameOrId (string _nameOrId, bool _ignoreColorCodes)
+//		{
+//			string sid = GetSteamID (_nameOrId, _ignoreColorCodes);
+//			if (sid != null)
+//				return this [sid];
+//			else
+//				return null;
+//		}
 
 		public string GetSteamID (string _nameOrId, bool _ignoreColorCodes)
Index: binary-improvements/7dtd-server-fixes/src/PlayerDataStuff.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/PlayerDataStuff.cs	(revision 232)
+++ binary-improvements/7dtd-server-fixes/src/PlayerDataStuff.cs	(revision 233)
@@ -8,9 +8,8 @@
 	{
 
-		public static void GM_SavePlayerData (int _clientId, PlayerDataFile _playerDataFile)
+		public static void GM_SavePlayerData (ClientInfo _cInfo, PlayerDataFile _playerDataFile)
 		{
 			try {
-				ClientInfo ci = ConnectionManager.Instance.GetClient (_clientId);
-				PersistentContainer.Instance.Players[ci.playerId].Inventory.Update(_playerDataFile);
+				PersistentContainer.Instance.Players[_cInfo.playerId, true].Update (_playerDataFile);
 			} catch (Exception e) {
 				Log.Out ("Error in GM_SavePlayerData: " + e);
