Almost ready. Only need to find out more in tests.