Backward compatibility is more easily accomplished if the previous versions have been designed to be forward compatible, or extensible, with built-in features such as hooks, plug-in, or an application program interface (API) that allows the addition of new features.