the behavior of the super keyword is not completely understood so far .
moudles ...
Modules play like namespaces in .net
Class names are just constants (i.e.)
	MyString = ::String
	"abc".class == MyString # true
ClassName.constants gets an array of all constants on a class or module
ClassName/ModuleName.const_get('PI') # gets the value of the constant :PI from the provided class or module
Think about the below

class Dog
    class << self
      def another_class_method
        :still_another_way
      end
    end
  end

  what is a better way to define class methods? using the above syntax or using the other "self.methodname" syntax? why? would you prefere one over the other? at which circumstances?