By now, we have looked at pretty much any feature that can be embedded into a GStreamer element. However, we have limited ourselves to the simple model of a filter element. In this chapter, we will look at the specific difficulties and things to keep in mind when writing specific types of elements. We will discuss output elements (sinks), input elements (sources), 1-to-N elements, N-to-1 elements, N-to-N elements, autopluggers and managers. Some of these represent elements that don't actually exist. Rather, they represent a general concept.