This is how I followed the code flow

1. User tries to create the image (calling ```images.create```)
2. Internally, that will call the ```insert_image``` request
3. Code then loops for a bit, waiting to see if the object was created remotely (```backoff_if_...``` is called with ```get``` which tries to periodically 'get' the remote resource)
4. Eventually, the get will succeed, and the get code does this:
```ruby 
data = connection.get_image(identity).body
new(data)
```
5. It simply creates a new object using the response data.
6. The ```new``` will do this:
```ruby
    def new(attributes = {})
      unless attributes.is_a?(::Hash)
        raise(ArgumentError.new("Initialization params must be <snip> ...))
      end
      model.new(
        {
          :collection => self,
          :service => service
        }.merge(attributes)
      )
    end
```
7. So I dont see any hook where the response can be coerced into something else on the model. This is the problem I was/am facing -- namely that once an attribute is defined on the model, one does not get to manipulate it, and fog will assume that the remote end also honors the same structure in the response.

I may be totally wrong here, in which case I'd appreciate pointers in the right direction.