Hmm, needs tests.