This took a while...