async def get_artifacts(self, agent=None):
        '''Return artifacts published to the environment.

        :param agent:
            If not ``None``, then returns only artifacts created by the agent.

        :returns: All artifacts published (by the agent).
        :rtype: list

        If environment has a :attr:`manager` agent, e.g. it is a slave
        environment in a :class:`~creamas.mp.MultiEnvironment`, then the
        manager's :meth:`~creamas.mp.EnvManager.get_artifacts` is called.
        '''
        # TODO: Figure better way for this
        if hasattr(self, 'manager') and self.manager is not None:
            artifacts = await self.manager.get_artifacts()
        else:
            artifacts = self.artifacts
        if agent is not None:
            artifacts = [a for a in artifacts if agent.name == a.creator]
        return artifacts