Moved the common code for descriptions into an own class.

Signed-off-by: Sebastian Bauer <mail@sebastianbauer.info>
Lazily create the description adapter and cache it.

Signed-off-by: Sebastian Bauer <mail@sebastianbauer.info>