initialization logic moved to a Module