- does not rely on any of the existing wrappers and instead relies on internal wrapper which performs in-flight/just-in-time wrapping and unwrapping from reactive to imperative types - performs transparent type conversion relying on MessageConverters and ConversionService - supports multiple inputs/outputs