An attempt is made to give a general formalism for synchronization in dynamical systems encompassing most of the known definitions and applications. The proposed set-up describes synchronization of interconnected systems with respect to a set of functionals and captures peculiarities of both self-synchronization and controlled synchronization. Various illustrative examples are give