Various design changes

Try to avoid once functions.
Reviewed setup, service and module design.
Code cleaning