diff --git a/README.md b/README.md
index a80dfb5..390c346 100644
--- a/README.md
+++ b/README.md
@@ -2,6 +2,10 @@
 
 This API helps developer with viewing images on maps. It supports Spigot 1.12 - 1.19.
 
+## Dependencies:
+
+- [ProtocolLib](https://www.spigotmc.org/resources/protocollib.1997/)
+
 ## Usage:
 
 First, include the API using Maven:
diff --git a/pom.xml b/pom.xml
index 17a47bb..56eaa0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,7 +24,7 @@
 
     <groupId>tech.sbdevelopment</groupId>
     <artifactId>MapReflectionAPI</artifactId>
-    <version>1.4</version>
+    <version>1.4.1</version>
     <packaging>jar</packaging>
 
     <name>MapReflectionAPI</name>
diff --git a/src/main/java/tech/sbdevelopment/mapreflectionapi/managers/Configuration.java b/src/main/java/tech/sbdevelopment/mapreflectionapi/managers/Configuration.java
index b9c8629..f5acc72 100644
--- a/src/main/java/tech/sbdevelopment/mapreflectionapi/managers/Configuration.java
+++ b/src/main/java/tech/sbdevelopment/mapreflectionapi/managers/Configuration.java
@@ -37,7 +37,6 @@ public class Configuration {
 
     private Configuration(JavaPlugin plugin) {
         this.file = new YamlFile(plugin, "config");
-        this.file.loadDefaults();
         reload();
     }
 
diff --git a/src/main/java/tech/sbdevelopment/mapreflectionapi/utils/YamlFile.java b/src/main/java/tech/sbdevelopment/mapreflectionapi/utils/YamlFile.java
index 7367592..50154a5 100644
--- a/src/main/java/tech/sbdevelopment/mapreflectionapi/utils/YamlFile.java
+++ b/src/main/java/tech/sbdevelopment/mapreflectionapi/utils/YamlFile.java
@@ -18,12 +18,15 @@
 
 package tech.sbdevelopment.mapreflectionapi.utils;
 
-import com.google.common.io.ByteStreams;
 import org.bukkit.configuration.file.FileConfiguration;
 import org.bukkit.configuration.file.YamlConfiguration;
 import org.bukkit.plugin.java.JavaPlugin;
 
-import java.io.*;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.logging.Level;
 
 public class YamlFile {
     private final JavaPlugin plugin;
@@ -35,56 +38,45 @@ public class YamlFile {
         this.plugin = plugin;
         this.name = name;
 
-        if (!plugin.getDataFolder().exists() && !plugin.getDataFolder().mkdir()) {
-            plugin.getLogger().severe("Couldn't generate the pluginfolder!");
-            return;
-        }
-
-        this.file = new File(plugin.getDataFolder(), name + ".yml");
-        if (!this.file.exists()) {
-            try {
-                if (!this.file.createNewFile()) {
-                    plugin.getLogger().severe("Couldn't generate the " + name + ".yml!");
-                    return;
-                }
-                plugin.getLogger().info("Generating the " + name + ".yml...");
-            } catch (IOException e) {
-                plugin.getLogger().severe("Couldn't generate the " + name + ".yml!");
-                return;
-            }
-        }
-        this.fileConfiguration = YamlConfiguration.loadConfiguration(this.file);
+        saveDefaultFile();
     }
 
-    public void loadDefaults() {
-        try {
-            InputStream in = plugin.getResource(name + ".yml");
-            if (in == null) {
-                plugin.getLogger().severe("Expected the resource " + name + ".yml, but it was not found in the plugin JAR!");
-                return;
-            }
+    public void reloadFile() {
+        if (this.file == null)
+            this.file = new File(this.plugin.getDataFolder(), name + ".yml");
 
-            OutputStream out = new FileOutputStream(this.file);
-            ByteStreams.copy(in, out);
-            reload();
-        } catch (IOException e) {
-            plugin.getLogger().severe("Couldn't load the default " + name + ".yml!");
+        this.fileConfiguration = YamlConfiguration.loadConfiguration(this.file);
+
+        InputStream defaultStream = this.plugin.getResource(name + ".yml");
+        if (defaultStream != null) {
+            YamlConfiguration defaultConfig = YamlConfiguration.loadConfiguration(new InputStreamReader(defaultStream));
+            this.fileConfiguration.setDefaults(defaultConfig);
         }
     }
 
     public FileConfiguration getFile() {
+        if (this.fileConfiguration == null)
+            reloadFile();
+
         return this.fileConfiguration;
     }
 
-    public void save() {
+    public void saveFile() {
+        if (this.fileConfiguration == null || this.file == null)
+            return;
+
         try {
             this.fileConfiguration.save(this.file);
         } catch (IOException e) {
-            plugin.getLogger().severe("Couldn't save the " + name + ".yml!");
+            plugin.getLogger().log(Level.SEVERE, "Couldn't save the file " + this.name + ".yml.", e);
         }
     }
 
-    public void reload() {
-        this.fileConfiguration = YamlConfiguration.loadConfiguration(this.file);
+    public void saveDefaultFile() {
+        if (this.file == null)
+            this.file = new File(this.plugin.getDataFolder(), name + ".yml");
+
+        if (!this.file.exists())
+            this.plugin.saveResource(name + ".yml", false);
     }
 }
\ No newline at end of file