This thesis investigates flexible self-organizing overlay networks for multimedia delivery - networks that are dynamically built on existing infrastructure to support the preferences of applications using them. These devices connect to each other to exchange videos. However, as the interests of their owners change, the overlay must adapt as well:

existing connections must be replaced with connections to other relevant devices, such as devices of other visitors with similar interests.

Deciding which devices should connect to each other, while also optimizing network performance is not trivial.

This thesis attempts to solve that issue by using a flexible and scalable self-organizing overlay located between an application and its underlying network, which optimizes itself based the application's interest in content and network quality. A special focus is placed on including metrics relevant to multimedia delivery, such as jitter and bottleneck bandwidth, in the optimization. As these metrics cannot be predicted by a third node, established approaches such as matchmaking cannot be used. Therefore, a new approach based on a novel interest-property concept is introduced, which provides the flexibility of traditional matchmaking approaches, but also supports optimization based on parameters that can only be determined once two potential neighbours connect. In addition, a distributed way for nodes to estimate the level of service they are likely to receive to another node is introduced. A ``Flocks'' prototype overlay that implements the concepts and techniques described in this thesis is developed and evaluated. Results show that Flocks optimize even large overlays based on content and network metrics quickly and with modest overhead.