Long, but please read.