Various cleanup and factorisation.

Signed-off-by: Victor Berger <victor.berger@m4x.org>