Any problem in computer science can be solved by adding a layer of abstraction, apart from the problem of too many layers of abstraction.
http://discuss.joelonsoftware.com/default.asp?joel.3.219431....
Unfortunately you have to get them from a FactoryFactory.
Against off-by-one errors, abstain from any from of loop.
For the real hard problems, like deciding whether your program has crashed or just takes a long time, give up.
That's why they had to name it Forth.