As instances are often generated geometries, we cannot rely on the data provided by `DupliObject::ob`. Use `DupliObject::ob_data` when possible. This required a major refactor in the code as the output variables are now gathered in context and easier to access.