Initial commit. Quite untested.