We can use the recursive #to_hash, but the implementation above isn't complete then.

For example in HAL we have `data[:_embedded][name] = entity_serializer`

The above to_hash method will traverse all the keys and values of data and call to_hash on all the values. So `data[:_embedded].to_hash` is just calling to hash on a hash that looks like
```
{
  :manager => serializer_object
}
```

Hash#to_hash just returns self, so the implementation proposed above will never call #to_hash on serializer_object


Maybe we need to change the initialize method in adapter.rb?

```ruby
#adapter.rb
    def initialize(serializer)
      @serializer = serializer
      @data = Hash.new{|h,k| h[k] = OpenStruct.new}
    end
```
We can use OpenStruct or some other type of object that doesn't just return self for its #to_hash method