Cgm passing

Again all this stuff should probably be using factories