In this article, I'll describe how you can modularise your smart contracts using something called the target pattern. Using standard Solidity, you will learn how to rewrite your brittle, tighly-coupled calls to clean modules and separation of concerns, using abi.encodeSelector and target.call(data)