Distributed Applications and their internal building blocks exposed as reusable components that can be used for all kinds of p2p usecases