IPM has the ability to serve static content. IPM however goes way beyond that and allows for dynamic content as well.
IPM makes uses of internal content files, and can also be hooked to Delphi code directly. Such internal content cotnains one ore more # characters in the filename and is protected from direct user access. An example project might look like this: