Interfaces used for hiding and replacing polymorphic compare. Including a module with interface S should hide the majority of functions that use polymorphic compare.
S