Now it just needs testing.