I've been working on this for a while.