This took WAY too long