diff --git a/platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/auctionhouse/objects/AuctionButtons.java b/platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/auctionhouse/objects/AuctionButtons.java
new file mode 100644
index 0000000..ffbd331
--- /dev/null
+++ b/platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/auctionhouse/objects/AuctionButtons.java
@@ -0,0 +1,86 @@
+package com.badbones69.crazyauctions.api.auctionhouse.objects;
+
+import com.badbones69.crazyauctions.utils.ItemUtils;
+import net.dehya.ruby.items.ItemBuilder;
+import org.bukkit.configuration.file.FileConfiguration;
+
+public class AuctionButtons {
+
+    private ItemBuilder sellingItemsButton;
+    private ItemBuilder sellingInfoButton;
+    private ItemBuilder biddingInfoButton;
+    private ItemBuilder currentListingsInfoButton;
+    private ItemBuilder expiredItemsButton;
+    private ItemBuilder expiredInfoButton;
+    private ItemBuilder categoriesButton;
+    private ItemBuilder categoriesInfoButton;
+    private ItemBuilder nextPageButton;
+    private ItemBuilder refreshPageButton;
+    private ItemBuilder backPageButton;
+    private ItemBuilder switchModeButton;
+
+    public AuctionButtons(FileConfiguration file) {
+        String path = "auction-house.settings.buttons.";
+        sellingItemsButton = ItemUtils.convertString(file.getString(path + "selling-items"));
+        sellingInfoButton = ItemUtils.convertString(file.getString(path + "info.selling-items"));
+        biddingInfoButton = ItemUtils.convertString(file.getString(path + "info.bidding"));
+        currentListingsInfoButton = ItemUtils.convertString(file.getString(path + "info.current-listings"));
+        expiredItemsButton = ItemUtils.convertString(file.getString(path + "expired-items"));
+        expiredInfoButton = ItemUtils.convertString(file.getString(path + "info.expired-items"));
+        categoriesButton = ItemUtils.convertString(file.getString(path + "categories"));
+        categoriesInfoButton = ItemUtils.convertString(file.getString(path + "info.categories"));
+        nextPageButton = ItemUtils.convertString(file.getString(path + "next-page"));
+        refreshPageButton = ItemUtils.convertString(file.getString(path + "refresh-page"));
+        backPageButton = ItemUtils.convertString(file.getString(path + "back-page"));
+        switchModeButton = ItemUtils.convertString(file.getString(path + "switch-mode"));
+    }
+
+    public ItemBuilder getSellingItemsButton() {
+        return sellingItemsButton;
+    }
+
+    public ItemBuilder getSellingInfoButton() {
+        return sellingInfoButton;
+    }
+
+    public ItemBuilder getBiddingInfoButton() {
+        return biddingInfoButton;
+    }
+
+    public ItemBuilder getCurrentListingsInfoButton() {
+        return currentListingsInfoButton;
+    }
+
+    public ItemBuilder getExpiredItemsButton() {
+        return expiredItemsButton;
+    }
+
+    public ItemBuilder getExpiredInfoButton() {
+        return expiredInfoButton;
+    }
+
+    public ItemBuilder getCategoriesButton() {
+        return categoriesButton;
+    }
+
+    public ItemBuilder getCategoriesInfoButton() {
+        return categoriesInfoButton;
+    }
+
+    public ItemBuilder getNextPageButton() {
+        return nextPageButton;
+    }
+
+    public ItemBuilder getRefreshPageButton() {
+        return refreshPageButton;
+    }
+
+    public ItemBuilder getBackPageButton() {
+        return backPageButton;
+    }
+
+    public ItemBuilder getSwitchModeButton() {
+        return switchModeButton;
+    }
+
+}
\ No newline at end of file
diff --git a/platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/auctionhouse/objects/AuctionHouse.java b/platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/auctionhouse/objects/AuctionHouse.java
index b38d593..c919160 100644
--- a/platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/auctionhouse/objects/AuctionHouse.java
+++ b/platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/auctionhouse/objects/AuctionHouse.java
@@ -2,7 +2,11 @@ package com.badbones69.crazyauctions.api.auctionhouse.objects;
 
 import com.badbones69.crazyauctions.api.auctionhouse.enums.AuctionType;
 import com.badbones69.crazyauctions.api.auctionhouse.interfaces.AuctionItem;
-import org.simpleyaml.configuration.file.YamlFile;
+import com.badbones69.crazyauctions.api.auctionhouse.objects.auctiontype.BiddingAuction;
+import com.badbones69.crazyauctions.api.auctionhouse.objects.auctiontype.SellingAuction;
+import com.badbones69.crazyauctions.api.events.AuctionAddEvent;
+import org.bukkit.Bukkit;
+import org.bukkit.configuration.file.FileConfiguration;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -11,27 +15,55 @@ import java.util.UUID;
 public class AuctionHouse {
 
     private String name;
+    private FileConfiguration auctionFile;
     private InventorySettings inventorySettings;
     private List<AuctionItem> auctionItems = new ArrayList<>();
 
-    public AuctionHouse(String name, YamlFile file) {
-        this.name = name;
-        this.inventorySettings = new InventorySettings();
-        inventorySettings.setTitle("Set Title Here with Color");
+    public AuctionHouse(FileConfiguration file) {
+        this.name = file.getString("auction-house.settings.name");
+        this.auctionFile = file;
+        this.inventorySettings = new InventorySettings(file);
         for (String auctionID : file.getConfigurationSection("auction-house.item-on-auction").getKeys(false)) {
             String path = "auction-house.item-on-auction" + auctionID + ".";
             AuctionType auctionType = AuctionType.getTypeFromName(file.getString(path + "auction-type"));
             if (auctionType == AuctionType.SELL) {
-                auctionItems.add(new BuyingAuction(
-                UUID.fromString(file.getString(path + "UUID")),
+                auctionItems.add(new SellingAuction(
+                UUID.fromString(file.getString(path + "seller-uuid")),
                 file.getLong(path + "price"),
                 file.getLong(path + "expire-time"),
-                file.getI(path + "")
-                ));
+                file.getItemStack(path + "selling-item")));
             } else {
-
+                auctionItems.add(new BiddingAuction(
+                UUID.fromString(file.getString(path + "seller-uuid")),
+                UUID.fromString(file.getString(path + "highest-bidder-uuid")),
+                file.getLong(path + "price"),
+                file.getLong(path + "current-bid"),
+                file.getLong(path + "expire-time"),
+                file.getItemStack(path + "selling-item")));
             }
         }
     }
 
+    public String getName() {
+        return name;
+    }
+
+    public FileConfiguration getAuctionFile() {
+        return auctionFile;
+    }
+
+    public InventorySettings getInventorySettings() {
+        return inventorySettings;
+    }
+
+    public List<AuctionItem> getAuctionItems() {
+        return auctionItems;
+    }
+
+    public void addAuctionItem(AuctionItem auctionItem) {
+        auctionItems.add(auctionItem);
+        AuctionAddEvent event = new AuctionAddEvent(auctionItem.getSeller(), this, auctionItem);
+        Bukkit.getServer().getPluginManager().callEvent(event);
+    }
+
 }
\ No newline at end of file
diff --git a/platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/auctionhouse/objects/InventorySettings.java b/platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/auctionhouse/objects/InventorySettings.java
index 0d8597f..ad579cf 100644
--- a/platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/auctionhouse/objects/InventorySettings.java
+++ b/platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/auctionhouse/objects/InventorySettings.java
@@ -1,15 +1,24 @@
 package com.badbones69.crazyauctions.api.auctionhouse.objects;
 
+import org.bukkit.configuration.file.FileConfiguration;
+
 public class InventorySettings {
 
     private String title;
+    private AuctionButtons auctionButtons;
+
+    public InventorySettings(FileConfiguration file) {
+        String path = "auction-house.settings.";
+        this.title = file.getString(path + "inventory-title");
+        this.auctionButtons = new AuctionButtons(file);
+    }
 
     public String getTitle() {
         return title;
     }
 
-    public void setTitle(String title) {
-        this.title = title;
+    public AuctionButtons getAuctionButtons() {
+        return auctionButtons;
     }
 
 }
\ No newline at end of file
diff --git a/platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/auctionhouse/objects/SellingAuction.java b/platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/auctionhouse/objects/auctiontype/BiddingAuction.java
similarity index 81%
rename from platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/auctionhouse/objects/SellingAuction.java
rename to platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/auctionhouse/objects/auctiontype/BiddingAuction.java
index f039fc7..dd141a3 100644
--- a/platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/auctionhouse/objects/SellingAuction.java
+++ b/platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/auctionhouse/objects/auctiontype/BiddingAuction.java
@@ -1,4 +1,4 @@
-package com.badbones69.crazyauctions.api.auctionhouse.objects;
+package com.badbones69.crazyauctions.api.auctionhouse.objects.auctiontype;
 
 import com.badbones69.crazyauctions.api.auctionhouse.enums.AuctionType;
 import com.badbones69.crazyauctions.api.auctionhouse.interfaces.AuctionItem;
@@ -6,7 +6,7 @@ import org.bukkit.inventory.ItemStack;
 
 import java.util.UUID;
 
-public class SellingAuction implements AuctionItem {
+public class BiddingAuction implements AuctionItem {
 
     AuctionType auctionType = AuctionType.BID;
     UUID seller;
@@ -16,9 +16,9 @@ public class SellingAuction implements AuctionItem {
     long expireTime;
     ItemStack sellingItem;
 
-    public SellingAuction(UUID seller, long price, long expireTime, ItemStack sellingItem) {
+    public BiddingAuction(UUID seller, UUID highestBidder, long price, long currentBid, long expireTime, ItemStack sellingItem) {
         this.seller = seller;
-        this.highestBidder = null;
+        this.highestBidder = highestBidder;
         this.price = price;
         this.currentBid = 0;
         this.expireTime = expireTime;
diff --git a/platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/auctionhouse/objects/BuyingAuction.java b/platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/auctionhouse/objects/auctiontype/SellingAuction.java
similarity index 80%
rename from platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/auctionhouse/objects/BuyingAuction.java
rename to platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/auctionhouse/objects/auctiontype/SellingAuction.java
index 6766ee6..09a1d18 100644
--- a/platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/auctionhouse/objects/BuyingAuction.java
+++ b/platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/auctionhouse/objects/auctiontype/SellingAuction.java
@@ -1,4 +1,4 @@
-package com.badbones69.crazyauctions.api.auctionhouse.objects;
+package com.badbones69.crazyauctions.api.auctionhouse.objects.auctiontype;
 
 import com.badbones69.crazyauctions.api.auctionhouse.enums.AuctionType;
 import com.badbones69.crazyauctions.api.auctionhouse.interfaces.AuctionItem;
@@ -6,7 +6,7 @@ import org.bukkit.inventory.ItemStack;
 
 import java.util.UUID;
 
-public class BuyingAuction implements AuctionItem {
+public class SellingAuction implements AuctionItem {
 
     AuctionType auctionType = AuctionType.SELL;
     UUID seller;
@@ -14,7 +14,7 @@ public class BuyingAuction implements AuctionItem {
     long expireTime;
     ItemStack sellingItem;
 
-    public BuyingAuction(UUID seller, long price, long expireTime, ItemStack sellingItem) {
+    public SellingAuction(UUID seller, long price, long expireTime, ItemStack sellingItem) {
         this.seller = seller;
         this.price = price;
         this.expireTime = expireTime;
diff --git a/platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/events/AuctionAddEvent.java b/platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/events/AuctionAddEvent.java
new file mode 100644
index 0000000..60ed2ca
--- /dev/null
+++ b/platforms/spigot/src/main/java/com/badbones69/crazyauctions/api/events/AuctionAddEvent.java
@@ -0,0 +1,64 @@
+package com.badbones69.crazyauctions.api.events;
+
+import com.badbones69.crazyauctions.api.auctionhouse.interfaces.AuctionItem;
+import com.badbones69.crazyauctions.api.auctionhouse.objects.AuctionHouse;
+import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
+import org.bukkit.event.Event;
+import org.bukkit.event.HandlerList;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author Ryder Belserion
+ *
+ * This event is fired when a item is added to a auction house.
+ *
+ */
+public class AuctionAddEvent extends Event {
+
+    private static final HandlerList handlerList = new HandlerList();
+
+    private final UUID uuid;
+    private final Player player;
+    private final AuctionItem auctionItem;
+    private final AuctionHouse auctionHouse;
+
+    /**
+     * A constructor to include values for a bid event.
+     *
+     * @param uuid the uuid of the player who placed the bid.
+     * @param auctionHouse the auction house the item is being added to.
+     * @param auctionItem the auction item being added.
+     */
+    public AuctionAddEvent(UUID uuid, AuctionHouse auctionHouse, AuctionItem auctionItem) {
+        this.uuid = uuid;
+        this.player = Bukkit.getPlayer(uuid);
+        this.auctionHouse = auctionHouse;
+        this.auctionItem = auctionItem;
+    }
+
+    public AuctionItem getAuctionItem() {
+        return auctionItem;
+    }
+
+    public AuctionHouse getAuctionHouse() {
+        return auctionHouse;
+    }
+
+    public Player getPlayer() {
+        return this.player;
+    }
+
+    public UUID getUUID() {
+        return this.uuid;
+    }
+
+    @Override
+    public @NotNull HandlerList getHandlers() {
+        return handlerList;
+    }
+
+}
\ No newline at end of file
diff --git a/platforms/spigot/src/main/java/com/badbones69/crazyauctions/utils/ItemUtils.java b/platforms/spigot/src/main/java/com/badbones69/crazyauctions/utils/ItemUtils.java
index f0820aa..7584fe6 100644
--- a/platforms/spigot/src/main/java/com/badbones69/crazyauctions/utils/ItemUtils.java
+++ b/platforms/spigot/src/main/java/com/badbones69/crazyauctions/utils/ItemUtils.java
@@ -1,11 +1,99 @@
 package com.badbones69.crazyauctions.utils;
 
 import com.badbones69.crazyauctions.api.enums.ServerVersion;
+import net.dehya.ruby.items.ItemBuilder;
+import org.bukkit.DyeColor;
 import org.bukkit.Material;
+import org.bukkit.block.banner.Pattern;
+import org.bukkit.block.banner.PatternType;
+import org.bukkit.enchantments.Enchantment;
+import org.bukkit.inventory.ItemFlag;
+
+import java.util.Arrays;
+import java.util.List;
 
 public class ItemUtils {
 
     public static Material getMaterial(String newMaterial, String oldMaterial) {
         return Material.matchMaterial(ServerVersion.isAtLeast(ServerVersion.v1_12) ? newMaterial : oldMaterial);
     }
+
+    /**
+     * Converts a string to an ItemBuilder with a placeholder for errors.
+     *
+     * @param itemString The String you wish to convert.
+     * @return The String as an ItemBuilder.
+     */
+    public static ItemBuilder convertString(String itemString) {
+        ItemBuilder itemBuilder = new ItemBuilder();
+
+        try {
+            for (String optionString : itemString.split(", ")) {
+                String option = optionString.split(":")[0];
+                String value = optionString.replace(option + ":", "").replace(option, "");
+
+                switch (option.toLowerCase()) {
+                    case "item":
+                        itemBuilder.setValue(value);
+                        break;
+                    case "name":
+                        itemBuilder.setDisplayName(value);
+                        break;
+                    case "amount":
+                        try {
+                            itemBuilder.setAmount(Integer.parseInt(value));
+                        } catch (NumberFormatException e) {
+                            itemBuilder.setAmount(1);
+                        }
+                        break;
+                    case "lore":
+                        itemBuilder.setLore(Arrays.asList(value.split(",")));
+                        break;
+                    case "player":
+                        //itemBuilder.setp(value);
+                        break;
+                    case "unbreakable-item":
+                        //if (value.isEmpty() || value.equalsIgnoreCase("true")) itemBuilder.setUnbreakable(true);
+                        break;
+                    default:
+//                        Enchantment enchantment = getEnchantment(option);
+//
+//                        if (enchantment != null && enchantment.getName() != null) {
+//                            try {
+//                                itemBuilder.addEnchantments(enchantment, Integer.parseInt(value));
+//                            } catch (NumberFormatException e) {
+//                                itemBuilder.addEnchantments(enchantment, 1);
+//                            }
+//
+//                            break;
+//                        }
+//
+//                        for (ItemFlag itemFlag : ItemFlag.values()) {
+//                            if (itemFlag.name().equalsIgnoreCase(option)) {
+//                                itemBuilder.addItemFlags(Arrays.asList(itemFlag.name()));
+//                                break;
+//                            }
+//                        }
+//
+//                        try {
+//                            for (PatternType pattern : PatternType.values()) {
+//                                if (option.equalsIgnoreCase(pattern.name()) || value.equalsIgnoreCase(pattern.getIdentifier())) {
+//                                    DyeColor color = getDyeColor(value);
+//                                    if (color != null) itemBuilder.addPattern(new Pattern(color, pattern));
+//                                    break;
+//                                }
+//                            }
+//                        } catch (Exception ignored) {
+//                        }
+                        break;
+                }
+            }
+        } catch (Exception e) {
+            itemBuilder.setMaterial(Material.RED_TERRACOTTA).setDisplayName("&c&lERROR").setLore(Arrays.asList("&cThere is an error", "&cFor : &c" + (placeHolder != null ? placeHolder : "")));
+            e.printStackTrace();
+        }
+
+        return itemBuilder;
+    }
+
 }
\ No newline at end of file