@Override
    public void onEnable() {
        try {
            long timetemp1 = System.nanoTime();
            getLoggerUtility();
            Exception ex1 = null;
            try {
                this.config = new ConfigHandler(this);
                this.config.loadConfigonStart();
                try {
                    givebook_list = ObjectManager.load(getDataFolder() + File.separator + "temp" + File.separator + "GiveAll.books");
                } catch (Exception e) {
                }
                try {
                    soldbooks = ObjectManager.load(getDataFolder() + File.separator + "temp" + File.separator + "Sold.books");
                } catch (Exception e) {
                }
            } catch (Exception e1) {
                ex1 = e1;
                Logger("Error on loading config: " + e1.getMessage(), "Error");
                e1.printStackTrace();
            }
            getUpdate().startUpdateTimer();
            Logger("Your Bukkit version: " + getServer().getBukkitVersion(), "Debug");
            if (isBukkitVersionCompatible()) {
                Logger("This plugin is compatible to this bukkit-version", "Debug");
            } else {
                Logger("Your plugin-version is NOT compatible!", "Error");
                Logger("*****************************", "Warning");
                Logger("Your Bukkit build should contain", "Warning");
                Logger("the package", "Warning");
                Logger("org.bukkit.inventory.meta.BookMeta.", "Warning");
                Logger("*****************************", "Warning");
                setEnabled(false);
            }
            getReportHandler();
            if (ex1 != null) {
                this.report.report(332, "Config loading failed", ex1.getMessage(), "BookShop", ex1);
            }
            try {
                SHOP_CONFIG_FILE = getDataFolder().toString() + File.separator + "Shopconfig.yml";
                this.configurationFile = new File(SHOP_CONFIG_FILE);
                this.SHOP_configuration = YamlConfiguration.loadConfiguration(this.configurationFile);
                this.SHOP_configuration.addDefault("FirstLineOfEveryShop", "[BookShop]");
                this.SHOP_configuration.addDefault("AdminShop", "AdminShop");
                this.SHOP_configuration.addDefault("Newspapers", "Newspapers");
                this.SHOP_configuration.options().copyDefaults(true);
                this.SHOP_configuration.save(this.configurationFile);
            } catch (Exception e1) {
                this.report.report(332, "Config loading failed", e1.getMessage(), "BookShop", e1);
                Logger("Error on loading config: " + e1.getMessage(), "Error");
                Logger("Using defaults!", "Error");
                e1.printStackTrace();
                Logger("Version: " + getVersion() + " failed to enable!", "Error");
            }
            try {
                getPluginManager();
                this.Help = new Help(this);
                this.MoneyHandler = new iConomyHandler(this);
                this.PermissionsHandler = new PermissionsChecker(this, "BookShop");
                getUpdate();
                this.ListenerShop = new BookShopListener(this);
            } catch (Exception e1) {
                Logger("Error on enabling: " + e1.getMessage(), "Error");
                this.report.report(334, "Error on enabling", e1.getMessage(), "BookShop", e1);
                e1.printStackTrace();
                Logger("Version: " + getVersion() + " failed to enable!", "Error");
                setEnabled(false);
            }

            this.metricshandler = new MetricsHandler(this);
            this.metricshandler.loadStatsFiles();
            getServer().getScheduler().runTaskTimerAsynchronously(this, new Runnable() {
                @Override
                public void run() {
                    BookShop.this.metricshandler.saveStatsFiles();
                }
            }, 200L, 50000L);

            getServer().getScheduler().runTaskLaterAsynchronously(this, new Runnable() {
                @Override
                public void run() {
                    BookShop.this.toggle = false;
                    BookShop.this.metricshandler.onStart();
                }
            }, 20L);

            timetemp1 = (System.nanoTime() - timetemp1) / 1000000L;
            Logger("Enabled in " + timetemp1 + " ms", "");
        } catch (Exception ex) {
            ex.printStackTrace();
            Logger("Uncatched Exeption! Disabling!", "Error");
            setEnabled(false);
            this.report.report(337, "Uncatched Exeption on loading", ex.getMessage(), "BookShop", ex);
            try {
                MetricsHandler.Error += 1;
            } catch (Exception e) {
            }
        }
    }