protected function _getObject($config = array())
    {
        $config = new KObjectConfig($config);

        $config->append(array(
            'attributes' => array(),
            'translate'  => true
        ));

        // Process all object sub-properties.
        foreach ($config as $key => $value)
        {
            if ($value instanceof KObjectConfig && $value->object === true) {
                $config->{$key} = $this->_getObject($value);
            }
        }

        if ($config->objectName && !$config->displayName) {
            $config->displayName = $config->objectName;
        }

        if (is_string($config->url)) {
            $config->url = $this->_getRoute($config->url);
        }

        // Make object non-linkable and set it as deleted if related entity is not found.
        if ($config->find && !$this->_findObject($config->find))
        {
            $config->url     = null;
            $config->deleted = true;
        }

        if ($config->image instanceof KObjectConfig)
        {
            if (is_string($config->image->url)) {
                $config->image->url = $this->_getRoute($config->image->url);
            }

            $config->image = $this->getObject('com:activities.activity.medialink', array('data' => $config->image));
        }

        // Cleanup config.
        foreach (array('find', 'object') as $property) {
            unset($config->$property);
        }

        return $this->getObject('com:activities.activity.object', array('data' => $config));
    }