I spent a long time on this...