@SuppressWarnings("unchecked")
	public void write(Object obj_to_write, String... keys) throws WriterException {
		_getLock();

		try {
			JSONObject current_obj = null;

			// Get key we want to write to
			String key_to_write = keys[keys.length - 1];

			// Remove the last key from the array
			List<String> list = new ArrayList<String>(Arrays.asList(keys));
			
			list.remove(keys.length - 1);
			keys = list.toArray(new String[list.size()]);

			// Get the object requested and write data
			current_obj = ConfigurationManager.read.getJSONObjectItem(keys);
			current_obj.put(key_to_write, obj_to_write);

			if (current_obj != null) {
				ConfigurationManager.logger.log("Writing: " + ConfigurationManager.read.getFullFile().toJSONString(), 5);

				try {
					this.file.setLength(0L);
					this.file.write(ConfigurationManager.read.getFullFile().toJSONString().getBytes());
				} catch (IOException e) {
					throw new WriterException(e.getMessage());
				}
			}
		} catch (ReaderException e) {
			throw new WriterException(e.getMessage());
		} finally {
			_releaseResources();
		}
	}