I am unsure about the difference between this.

```
def String.hello  
  puts "hello there"   
end

```

and

```
x = Person.new    
def x.hello    
  puts "hello there"    
end

```

From my understanding the second code block will create an object of class Person. When I do the *def x.hello* it creates an anonymous class (singleton class) that will be checked first for methods when sending a message to the *x* object.

Is this the same case for the *def String.hello*? String is just an instance of class Class correct? I have read that doing *def String.hello* will add the method as one of String's class methods.... this would be different than an anonymous class being created that sits in between the object and its class where it gets its instance methods.

What happens with both blocks of code above?