There are only 2 hard problems in computer science: cache coherency, naming things and off by 1 errors...