public void setProperty(String name, Object value) {
		properties.put(name, value);

		if (name.equals("sodbox.implicit.values")) {
			ClassDescriptor.treateAnyNonPersistentObjectAsValue = getBooleanValue(value);
		}
		else if (name.equals("sodbox.serialize.transient.objects")) {
			ClassDescriptor.serializeNonPersistentObjects = getBooleanValue(value);
		}
		else if (name.equals("sodbox.object.cache.init.size")) {
			objectCacheInitSize = (int) getIntegerValue(value);

			if (objectCacheInitSize <= 0) {
				throw new IllegalArgumentException(
						"Initial object cache size should be positive");
			}
		}
		else if (name.equals("sodbox.object.cache.kind")) {
			cacheKind = (String) value;
		}
		else if (name.equals("sodbox.object.index.init.size")) {
			initIndexSize = (int) getIntegerValue(value);
		}
		else if (name.equals("sodbox.extension.quantum")) {
			extensionQuantum = getIntegerValue(value);
		}
		else if (name.equals("sodbox.gc.threshold")) {
			gcThreshold = getIntegerValue(value);
		}
		else if (name.equals("sodbox.file.readonly")) {
			readOnly = getBooleanValue(value);
		}
		else if (name.equals("sodbox.file.noflush")) {
			noFlush = getBooleanValue(value);
		}
		else if (name.equals("sodbox.alternative.btree")) {
			alternativeBtree = getBooleanValue(value);
		}
		else if (name.equals("sodbox.background.gc")) {
			backgroundGc = getBooleanValue(value);
		}
		else if (name.equals("sodbox.string.encoding")) {
			encoding = (value == null) ? null : value.toString();
		}
		else if (name.equals("sodbox.lock.file")) {
			lockFile = getBooleanValue(value);
		}
		else if (name.equals("sodbox.replication.ack")) {
			replicationAck = getBooleanValue(value);
		}
		else if (name.equals("sodbox.concurrent.iterator")) {
			concurrentIterator = getBooleanValue(value);
		}
		else if (name.equals("sodbox.slave.connection.timeout")) {
			slaveConnectionTimeout = (int) getIntegerValue(value);
		}
		else if (name.equals("sodbox.force.store")) {
			forceStore = getBooleanValue(value);
		}
		else if (name.equals("sodbox.page.pool.lru.limit")) {
			pagePoolLruLimit = getIntegerValue(value);
		}
		else if (name.equals("sodbox.multiclient.support")) {
			multiclientSupport = getBooleanValue(value);
		}
		else if (name.equals("sodbox.reload.objects.on.rollback")) {
			reloadObjectsOnRollback = getBooleanValue(value);
		}
		else if (name.equals("sodbox.reuse.oid")) {
			reuseOid = getBooleanValue(value);
		}
		else if (name.equals("sodbox.compatibility.mode")) {
			compatibilityMode = (int) getIntegerValue(value);
		}
		else if (name.equals("sodbox.serialize.system.collections")) {
			serializeSystemCollections = getBooleanValue(value);
		}

		if (multiclientSupport && backgroundGc) {
			throw new IllegalArgumentException(
					"In mutliclient access mode bachround GC is not supported");
		}
	}