When such meta-programming is present I'm tempted to be a little more explicit about the intention of the method.

```ruby
def create_phone_class 
```

Feels like a more honest name, and gives callers a clear sense that meta programming is involved.

I'm also wandering if we can get remove the need for the class_eval, primarily to make it clearer to readers what the Phone class is and what the behaviour it has. I find it a little hard to parse the creation of the class and where/what its behaviour is. Maybe something like (though I'm returning a instance rather than a class here):

```ruby
class Phone
  def initialize(articulation, stress)
    @articulation, @stress = articulation, stress  
  end

  def sonority
    sonority_of @articulation
  end

end
```

WDYT?