because of the `bag` for info, this can return the same type multiple times