public OutputStream store(final String name) throws IOException {
	/*
	 * The persistence service actually yields a real
	 * OutputStream, but since it needs to know the final size of
	 * the data before that, it isn't actually possible to use it
	 * as an OutputStream in any reasonable manner. Thus, all data
	 * is first "pre-cached" in a ByteArrayOutputStream, and then
	 * written to the persistence store.
	 *
	 * Oh God, it's so stupid.
	 */
	OutputStream ret = new ByteArrayOutputStream() {
		public void close() {
		    byte[] res = toByteArray();
		    try {
			put(new URL(base, mangle(name)), res);
		    } catch(java.net.MalformedURLException e) {
			throw(new RuntimeException(e));
		    }
		}
	    };
	return(ret);
    }