# Message Handling Pipeline NServiceBus uses the concept of _pipelines_. A pipeline refers to the series of actions taken as a result of the triggering action, e.g. an incoming message triggers the incoming pipeline, or an outgoing message triggers the outgoing pipeline. ## Pipeline customization There are several ways to customize the pipelines with varying levels of complexity. * [Manipulate the pipeline with behaviors](/nservicebus/pipeline/manipulate-with-behaviors.md) * [Steps, stages and connectors](/nservicebus/pipeline/steps-stages-connectors.md) * [Message mutators](/nservicebus/pipeline/message-mutators.md) * [Abort the pipeline](/nservicebus/pipeline/aborting.md) * [React to pipeline events](/nservicebus/pipeline/events.md) Unit testing of custom extensions is supported by [the `NServiceBus.Testing` library](/nservicebus/testing/index.md#testing-a-behavior).