Ruby's out-of-the-box toolkit for customizing objects — inheritance, mix-ins via include/extend, super, and prepend — combined with overriding specific methods. Nick Sutterer argues these are low-level mechanics: overriding requires knowing which method is called where, multiple modules silently override the same method, and you cannot skip a particular module in the super chain or delete an inherited method. Trailblazer's step DSL was designed as an alternative for workflow customization.