grid api

how about this?

```python
if is_source_key(key):
    try:
        value = value.id
    except AttributeError:
        pass
```

This is a better way to do the duck typing, yeah?

Also aren't there more `*src` keys? Here's a decent regex to handle this:
`SRC_REGEX = re.compile(r'.+src$')`

(which could live in a function in a utils file?)