grid api

looks like there's some extra logic here, but i still think it would be better if it lived in the object that needs to provide the `id`