transport is functorial