Actually compiles, but untested.