This is getting entirely too complex.