@djlink "separation of concerns" is a skill in software development that allows one to broaden the reuse potential. Many developers tend to think of their product in terms of software language, processor, operating system, graphics library, or some other non-functional requirement, but the product's functional requirements dictate none of those.