```
module Gym
  def self.included(class_or_module)
    class_or_module.send(:include, InstanceMethods)
    class_or_module.extend(ClassMethods)
  end

  module ClassMethods
    def build
    end
  end

  module InstanceMethods
    def open
    end

    def book_for_practice
    end

    def close
    end
  end
end

```

this is an example in the Ruby's Object Lifecycle Callbacks section of RubyMonk. I don't understand how it's supposed to work or what the point of this is. `self.included` should just document how the two modules within `Gym` get used, right? why does `class_or_module` then get sent/extended? why doesn't it get saved in some sort of arrays that document the lifecyle, like in the examples leading up to this one, such as

```
  @@extended_objects = []

  def self.extended_objects
    @@extended_objects
  end

  def self.extended(class_or_module)
    @@extended_objects << class_or_module

```