This is not pretty, but