By planning for concurrency, and decoupling operations in time, you have all these options—including the stand-alone option, where you can choose not to be concurrent. Going the other way (trying to add concurrency to a nonconcurrent application) is much harder.