collection detection injection projection