use private_class_method instead of class << self