diff --git a/Assets/Scripts/Enemy/EnemyAttack.cs b/Assets/Scripts/Enemy/EnemyAttack.cs
index 1b26b61b66d785648bab9b6a64e731c5fc8e2cce..dff28f0c65ebaacf62d5b9afecafc7da554aaaa1 100644
--- a/Assets/Scripts/Enemy/EnemyAttack.cs
+++ b/Assets/Scripts/Enemy/EnemyAttack.cs
@@ -67,7 +67,7 @@ public class EnemyAttack : MonoBehaviour
             AttackPet ();
         }
 
-        if (playerHealth.currentHealth <= 0)
+        if (playerHealth.CurrentHealth <= 0)
         {
             anim.SetBool("PlayerDeath", true);
         }
@@ -78,7 +78,7 @@ public class EnemyAttack : MonoBehaviour
     {
         timer = 0f;
 
-        if (playerHealth.currentHealth > 0)
+        if (playerHealth.CurrentHealth > 0)
         {
             playerHealth.TakeDamage (attackDamage);
         }
diff --git a/Assets/Scripts/Enemy/EnemyMovement.cs b/Assets/Scripts/Enemy/EnemyMovement.cs
index 34d301c2ac5e9d49586cde2b2c3de5776b6d5925..ecda7acd0a45e2c2250c08bdd3ff3119965a5e3a 100644
--- a/Assets/Scripts/Enemy/EnemyMovement.cs
+++ b/Assets/Scripts/Enemy/EnemyMovement.cs
@@ -27,7 +27,7 @@ public class EnemyMovement : MonoBehaviour
 
     void Update ()
     {
-        if(enemyHealth.currentHealth > 0 && playerHealth.currentHealth > 0)
+        if(enemyHealth.currentHealth > 0 && playerHealth.CurrentHealth > 0)
         {
             nav.SetDestination(playerPosition.position);
 
diff --git a/Assets/Scripts/Managers/EnemyManager.cs b/Assets/Scripts/Managers/EnemyManager.cs
index e428e7918e61635a2448c1a95034b3517947863a..652e261000aa6416567f3d3fe096ee1a72e99357 100644
--- a/Assets/Scripts/Managers/EnemyManager.cs
+++ b/Assets/Scripts/Managers/EnemyManager.cs
@@ -23,7 +23,7 @@ public class EnemyManager : MonoBehaviour
 
     void Spawn ()
     {
-        if (playerHealth.currentHealth <= 0f)
+        if (playerHealth.CurrentHealth <= 0f)
         {
             return;
         }
diff --git a/Assets/Scripts/Managers/GameOverManager.cs b/Assets/Scripts/Managers/GameOverManager.cs
index 8229a8d7ecf43ec2122ce8698b96000fa6e3492b..b4262f55105efa05fc46fc853aae53bc778b8070 100644
--- a/Assets/Scripts/Managers/GameOverManager.cs
+++ b/Assets/Scripts/Managers/GameOverManager.cs
@@ -19,7 +19,7 @@ public class GameOverManager : MonoBehaviour
 
     void Update()
     {
-        if (playerHealth.currentHealth <= 0)
+        if (playerHealth.CurrentHealth <= 0)
         {
             anim.SetTrigger("GameOver");
 
diff --git a/Assets/Scripts/Managers/GlobalManager.cs b/Assets/Scripts/Managers/GlobalManager.cs
index fba287db9dda9110de5924de43355093ad3b0106..224d446b8b75b3f0ed0df7cdbad76a418caf11dd 100644
--- a/Assets/Scripts/Managers/GlobalManager.cs
+++ b/Assets/Scripts/Managers/GlobalManager.cs
@@ -7,6 +7,15 @@ public class GlobalManager : MonoBehaviour
 {
     public static GlobalManager Instance;
     private GlobalStateManager globalState;
+    private string playerName;
+    public string PlayerName
+    {
+        get => playerName;
+        set
+        {
+            playerName = value;
+        }
+    }
 
     private void Awake()
     {
diff --git a/Assets/Scripts/Pet/DogHeal.cs b/Assets/Scripts/Pet/DogHeal.cs
index d0e23699e11a162f77487e1175af3350b9c40fdd..d4c66711b181e03d5acadfb5c0d817437d0045b3 100644
--- a/Assets/Scripts/Pet/DogHeal.cs
+++ b/Assets/Scripts/Pet/DogHeal.cs
@@ -21,7 +21,7 @@ public class DogHeal : MonoBehaviour
     void Update()
     {
         timer += Time.deltaTime;
-        if (timer >= timeBetweenHeals && playerHealth.currentHealth < 100)
+        if (timer >= timeBetweenHeals && playerHealth.CurrentHealth < 100)
         {
             print("berhasil masuk mau heal");
             Heal ();
@@ -35,7 +35,7 @@ public class DogHeal : MonoBehaviour
     void Heal ()
     {
         timer = 0f;
-        int playerHealthLost = 100 - playerHealth.currentHealth;
+        int playerHealthLost = 100 - playerHealth.CurrentHealth;
         if (playerHealthLost < healAmount){
             healAmount = playerHealthLost;
             print(healAmount);
diff --git a/Assets/Scripts/Pet/PetMovement.cs b/Assets/Scripts/Pet/PetMovement.cs
index 070f4dd79f7eef3ba27c869c9ae4d05ec3027539..25c77fe49c7f1da705b49e4bf623148905bc0c69 100644
--- a/Assets/Scripts/Pet/PetMovement.cs
+++ b/Assets/Scripts/Pet/PetMovement.cs
@@ -23,7 +23,7 @@ public class PetMovement : MonoBehaviour
     // Update is called once per frame
     void Update()
     {
-        if (petHealth.currentHealth > 0 && playerHealth.currentHealth > 0)
+        if (petHealth.currentHealth > 0 && playerHealth.CurrentHealth > 0)
         {
             nav.SetDestination (playerPosition.position);
         }
diff --git a/Assets/Scripts/Player/PlayerHealth.cs b/Assets/Scripts/Player/PlayerHealth.cs
index dd4fc3becfdcd92353e036c2de931241943508ff..10ec415dbea3c3a505c020a915735e1815e252df 100644
--- a/Assets/Scripts/Player/PlayerHealth.cs
+++ b/Assets/Scripts/Player/PlayerHealth.cs
@@ -5,13 +5,23 @@ using System.Collections;
 public class PlayerHealth : MonoBehaviour
 {
     public readonly int startingHealth = 100;
-    public int currentHealth;
+    private int currentHealth = -1;
     public Slider healthSlider;
     public Image damageImage;
     public AudioClip deathClip;
     public float flashSpeed = 5f;
     public Color flashColour = new Color(1f, 0f, 0f, 0.1f);
 
+    public int CurrentHealth
+    {
+        get => currentHealth;
+        set
+        {
+            currentHealth = value;
+            healthSlider.value = currentHealth;
+        }
+    }
+
 
     Animator anim;
     AudioSource playerAudio;
@@ -29,7 +39,13 @@ public class PlayerHealth : MonoBehaviour
         playerMovement = GetComponent<PlayerMovement>();
         playerShooting = GetComponentInChildren<PlayerShooting>();
 
-        currentHealth = startingHealth;
+        if (currentHealth == -1)
+        {
+            currentHealth = startingHealth;
+        }
+
+        Debug.Log("currentHealt: "+ currentHealth);
+        healthSlider.value = currentHealth;
     }
 
 
diff --git a/Assets/Scripts/Player/Weapons/PlayerSwordAnimation.cs b/Assets/Scripts/Player/Weapons/PlayerSwordAnimation.cs
index cc5ed9270b3495cb2698c897b79ef4a7476d77e7..63e21c4c796b6c2495f18daaeb66444a572752b9 100644
--- a/Assets/Scripts/Player/Weapons/PlayerSwordAnimation.cs
+++ b/Assets/Scripts/Player/Weapons/PlayerSwordAnimation.cs
@@ -7,6 +7,13 @@ public class PlayerSwordAnimation : MonoBehaviour
     [SerializeField]
     private GameObject sword;
 
+    private Animator animator;
+
+    private void Awake()
+    {
+        this.animator = sword.GetComponent<Animator>();
+    }
+
     // Start is called before the first frame update
     void Start()
     {
@@ -24,8 +31,8 @@ public class PlayerSwordAnimation : MonoBehaviour
 
     IEnumerator SwordSwinging()
     {
-        sword.GetComponent<Animator>().Play("SwordSwing");
+        this.animator.Play("SwordSwing");
         yield return new WaitForSeconds(1.0f);
-        sword.GetComponent<Animator>().Play("Idle");
+        this.animator.Play("Idle");
     }
 }
diff --git a/Assets/Scripts/SaveLoad/SaveLoadManager.cs b/Assets/Scripts/SaveLoad/SaveLoadManager.cs
index ea37197a8b449436e86c50ced57a66da05b0d4a4..0814fb6f8348d78ad0adbc01fad2d18a82e1f865 100644
--- a/Assets/Scripts/SaveLoad/SaveLoadManager.cs
+++ b/Assets/Scripts/SaveLoad/SaveLoadManager.cs
@@ -49,8 +49,8 @@ public class SaveLoadManager : MonoBehaviour
     {
         var state = GlobalStateManager.Instance.GetState();
         state.metaStateSave.name = name;
-        var json = JsonUtility.ToJson(state);
 
+        var json = JsonUtility.ToJson(state);
         var file = SaveLoadConfig.files[Id];
         var path = Application.persistentDataPath + "/" + file + ".json";
         File.WriteAllText(path, json);
diff --git a/Assets/Scripts/States/GlobalStateManager.cs b/Assets/Scripts/States/GlobalStateManager.cs
index 278ee8af5078cc313b645356f1b43ebd50589a95..d8b5a4b5fd22f57035810af7b27764f32e3cd5e2 100644
--- a/Assets/Scripts/States/GlobalStateManager.cs
+++ b/Assets/Scripts/States/GlobalStateManager.cs
@@ -46,7 +46,7 @@ public class GlobalStateManager : MonoBehaviour
     {
         get
         {
-            return playerHealth.currentHealth;
+            return playerHealth.CurrentHealth;
         }
     }
 
@@ -108,8 +108,13 @@ public class GlobalStateManager : MonoBehaviour
 
     public void SetState(StateSave state)
     {
-        Debug.Log("STATE: " + state);
-        playerHealth.currentHealth = state.playerStateSave.health;
+        // TODO: SET STATES
+        Debug.Log("STATE: " + state.ToString());
+
+        // TODO: set meta state save
+
+
+        playerHealth.CurrentHealth = state.playerStateSave.health;
         GameControl.control.currency = state.playerStateSave.money;
     }
 }
diff --git a/Assets/Scripts/States/StateSave.cs b/Assets/Scripts/States/StateSave.cs
index f9f3488b7a0e4ef57749a6acbd8e8bb697b614cd..a3335a3b555e562d9dd33b7004152416681c81f3 100644
--- a/Assets/Scripts/States/StateSave.cs
+++ b/Assets/Scripts/States/StateSave.cs
@@ -1,8 +1,11 @@
-using System;
+using Newtonsoft.Json;
+using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Reflection;
 using System.Text;
 using System.Threading.Tasks;
+using UnityEngine;
 
 [Serializable]
 public class MetaStateSave
@@ -22,6 +25,11 @@ public class MetaStateSave
     {
         this.updatedAt = DateTime.Now.ToString(SaveLoadConfig.dateTimeFormat);
     }
+
+    public override string ToString()
+    {
+        return JsonConvert.SerializeObject(this);
+    }
 }
 
 [Serializable]
@@ -37,6 +45,11 @@ public class PlayerStateSave
         this.health = health;
         this.idxQuest = idxQuest;
     }
+
+    public override string ToString()
+    {
+        return JsonConvert.SerializeObject(this);
+    }
 }
 
 [Serializable]
@@ -50,6 +63,11 @@ public class PetStateSave
         this.health = health;
         this.idxCurrentPet = idxCurrentPet;
     }
+
+    public override string ToString()
+    {
+        return JsonConvert.SerializeObject(this);
+    }
 }
 
 [Serializable]
@@ -61,6 +79,11 @@ public class GlobalStateSave
     {
         this.timePlayed = timePlayed;
     }
+
+    public override string ToString()
+    {
+        return JsonConvert.SerializeObject(this);
+    }
 }
 
 [Serializable]
@@ -78,4 +101,9 @@ public class StateSave
         this.petStateSave = petStateSave;
         this.globalStateSave = globalStateSave;
     }
+
+    public override string ToString()
+    {
+        return JsonConvert.SerializeObject(this);
+    }
 }