public void saveWorld(World world){
        if(worlds.containsKey(world)){
        //Alright let's do this!
            File ymlFile = new File(plugin.getDataFolder(),world.getName()+".circuits.yml");
            if(!ymlFile.exists()) {
                try {
                    ymlFile.createNewFile();
                } catch(IOException ex) {
                    plugin.error("Could not create "+ymlFile.getName());
                }
            }
            FileConfiguration yml = YamlConfiguration.loadConfiguration(ymlFile);
            
            if(QuantumConnectors.VERBOSE_LOGGING) plugin.log(plugin.getMessage("saving").replace("%file",ymlFile.getName()));
            
        //Prep this world's data for saving
            List<Object> tempCircuits = new ArrayList<Object>();

            Map<String,Object> tempCircuitObj;
            Map<String,Object> tempReceiverObj;
            ArrayList tempReceiverObjs;
            Circuit currentCircuit;
            List<Receiver> currentReceivers;

            Map<Location,Circuit> currentWorldCircuits = worlds.get(world);
            
            for(Location cLoc : currentWorldCircuits.keySet()){

                currentCircuit = currentWorldCircuits.get(cLoc);

                tempCircuitObj = new HashMap<String,Object>();

                tempCircuitObj.put("x",cLoc.getBlockX());
                tempCircuitObj.put("y",cLoc.getBlockY());
                tempCircuitObj.put("z",cLoc.getBlockZ());
                
                tempCircuitObj.put("o", currentCircuit.getOwner());

                currentReceivers = currentCircuit.getReceivers();

                tempReceiverObjs = new ArrayList();
                Receiver r;
                for(int i = 0; i < currentReceivers.size(); i++){
                    r = currentReceivers.get(i);
                    
                    tempReceiverObj = new HashMap<String,Object>();
                    
                    tempReceiverObj.put("z",r.location.getBlockZ());
                    tempReceiverObj.put("y",r.location.getBlockY());
                    tempReceiverObj.put("x",r.location.getBlockX());
                    
                    tempReceiverObj.put("d",r.delay);
                    tempReceiverObj.put("t",r.type);
                    
                    tempReceiverObjs.add(tempReceiverObj);
                }

                tempCircuitObj.put("r",tempReceiverObjs);

                tempCircuits.add(tempCircuitObj);
            }
            
            yml.set("fileVersion","2");
            yml.set("circuits", tempCircuits);

            try{
                yml.save(ymlFile);

                if(QuantumConnectors.VERBOSE_LOGGING) plugin.log(plugin.getMessage("saved").replace("%file",ymlFile.getName()));
            }catch(IOException IO) {
                plugin.error(plugin.getMessage("save_failed").replace("%world", world.getName()));
            }  
        }else{
            plugin.error(plugin.getMessage("save_failed").replace("%world", world.getName()));
        }
    }