implement new transitive compilation strategy