~ decouple
~ abstractions in programming are a way of chunking problems
~ first, write down a clear problem definition
see also: how to architect software﹖